我是Ruby的新手,我试图使用RegEx在输入文本文件中进行多次搜索和替换,但是我的代码不起作用,我想我明白为什么它没有& #39;工作,但我不知道我需要使其工作的语法。 继承我的代码:
# encoding: utf-8
#!/usr/bin/ruby
# open file to read and write
file = File.open("input.txt", "r+")
# get the contents of the file
contents = file.read
file.close
reassign = contents.gsub(/\w+/, '£££££')
# save it out as a new file
new_file = File.new("output.txt")
new_file.write(reassign)
new_file.close
这是错误消息:
C:/Users/parsonsr/RubymineProjects/Test 3/test3.rb:14:in `write': not opened for writing (IOError)
from C:/Users/parsonsr/RubymineProjects/Test 3/test3.rb:14:in `<top (required)>'
from -e:1:in `load'
from -e:1:in `<main>'
我尝试使用数组传递每一行并更改相关的内容,但之后它只将数组中的内容保存到输出而不是文件的其余部分。 我要么需要它来更改一个文件中已经存在的文本,要么更改文本然后保存文件,将新更改保存到输出文件中,以最简单的方式。 希望这是有道理的。 感谢
答案 0 :(得分:0)
看看documentation。请注意,File#open接收模式&#34; r&#34;默认情况下。 所以答案是:改变
File.new("output.txt")
到
File.new("output.txt", "w")
你可以在Ruby中做的另一件事是:
File.write("output.txt", reassign)
或者:
File.open("output.txt", "w")
另外,我不知道目的是什么,但考虑一个大文件,你可能想要读取批处理行并每次都将它们写入输出文件,而不是一次读取所有行记忆。