0

有没有办法在不涉及 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
4

2 回答 2

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'}
于 2012-10-02T04:42:23.247 回答
0

写入文件不会插入;它总是覆盖。这使得就地修改文本变得很尴尬,因为每次添加新内容时都必须重写文件的其余全部内容。

如果文件足够小以适合内存,您可以将其读入、修改并写回。否则,您确实最好使用临时文件。

于 2012-10-02T04:45:00.243 回答