有没有办法在不涉及 2 个文件的情况下编辑文件中的每一行?比如说,原始文件有,
test01
test02
test03
我想像这样编辑它
test01,a
test02,a
test03,a
尝试了代码块中显示的内容,但它替换了一些字符。
将其写入临时文件然后替换原始文件有效,但是,我需要经常编辑文件,因此更喜欢在文件本身中进行。任何指示都值得赞赏。
谢谢!
File.open('mytest.csv', 'r+') do |file|
file.each_line do |line|
file.seek(-line.length, IO::SEEK_CUR)
file.puts 'a'
end
end
f = open 'mytest.csv', 'r+'
r = f.readlines.map { |e| e.strip << ',a' }
f.rewind
f.puts r
f.close # you can leave out this line if it's the last one that runs
这是一个单行变体,请注意,在这种情况下,2 个描述符保持打开状态,直到程序退出。
open(F='mytest.csv','r+').puts open(F,'r').readlines.map{|e|e.strip<<',a'}
写入文件不会插入;它总是覆盖。 这使得就地修改文本变得很尴尬,因为每次添加新内容时都必须重写文件的其余全部内容。
如果文件足够小,可以放入内存,则可以将其读入、修改,然后再写出。 否则,您真的最好使用临时文件。