2012-03-21 112 views
1

我正在编写的Ruby脚本将在每天早上运行,并将提取有关备份文件的信息并将它们写入csv文件。该文件在第一行有列名称。Ruby:将文本追加到文件的第二行

我得到它通过追加到文件的结尾工作:

open("#{curDir}/Backup_Times.csv", 'a') do |f| 

     ... 
end 

我想看到最新的数据第一次,而无需在Excel中进行排序。

在Ruby中,有没有办法从文件的第二行开始写这些数据?

+1

你可能会重新说明这个问题,以更好地说明你到底想要达到什么目的吗? – 2012-03-21 15:15:09

+1

正在读取所有文件并将修改后的文件作为整体写入一个选项? – 2012-03-21 15:33:14

回答

2

您编写一个新文件,在所需的行上应用您的更改,然后将结果重命名为原始文件名。以下方法将复制文件并将输出文件对象生成到正确行的块,以便块可以输出新行。

def insert_lines_following_line file, line_no 
    tmp_fn = "#{file}.tmp" 
    File.open(tmp_fn, 'w') do |outf| 
    line_ct = 0 
    IO.foreach(file) do |line| 
     outf.print line 
     yield(outf) if line_no == (line_ct += 1) 
    end 
    end 
    File.rename tmp_fn, file 
end 

insert_lines_following_line("#{curDir}/Backup_Times.csv", 1) do |outf| 
    # output new csv lines in this block 
    outf.puts ['foo','bar','baz',1,2,3].join(",") # or however you build your csv line 
end