2012-03-21 96 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