有没有办法编辑文件中的每一行,而不涉及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
答案 0 :(得分:1)
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'}
答案 1 :(得分:0)
写入文件不会插入;它总是覆盖。这使得就地修改文本变得很尴尬,因为每次添加新内容时都必须重写文件的其余内容。
如果文件足够小以适合内存,您可以读取它,修改它并将其写回。否则,您最好使用临时文件。