【问题标题】:Ruby: Append text to the 2nd line of a fileRuby:将文本附加到文件的第二行
【发布时间】:2012-04-06 02:27:51
【问题描述】:

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

我已经通过附加到文件末尾来使其工作:

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

        ...
end

我想先查看最新数据,而不必在 Excel 中排序。

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

【问题讨论】:

  • 您能否重新表述这个问题,以更好地说明您想要实现的目标?
  • 是否可以选择读取所有文件并将修改后的文件作为一个整体写回?

标签: ruby string file


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-08
    • 2018-01-21
    • 1970-01-01
    • 1970-01-01
    • 2021-09-03
    • 1970-01-01
    • 2018-05-05
    • 2015-11-22
    相关资源
    最近更新 更多