Ruby: добавить текст во 2-ю строку файла - PullRequest
1 голос
/ 21 марта 2012

Сценарий Ruby, который я пишу, будет запускаться каждое утро и извлекать информацию о файлах резервных копий и записывать их в файл CSV. Этот файл имеет имена столбцов в первой строке.

Я заставил его работать, добавив в конец файла:

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

        ...
end

Я бы хотел сначала просмотреть самые новые данные без необходимости сортировки в Excel.

В Ruby, есть ли способ записать эти данные, начиная со 2-й строки файла?

1 Ответ

2 голосов
/ 21 марта 2012

Вы пишете новый файл, применяя изменения в нужной строке, а затем переименовываете результат обратно в исходное имя файла.Следующий метод скопирует файл и выдаст объект выходного файла в блок на правильной строке, чтобы этот блок мог вывести ваши новые строки.

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...