2016-05-13 13 views
1

У меня есть список имен (names.txt), разделенных линией. После того, как я прокручу каждую строку, я хотел бы переместить ее в другой файл (processed.txt).Перемещение строки из одного текстового файла в другой

Моя текущая реализация Переберите каждую строку:

open("names.txt") do |csv| 
    csv.each_line do |line| 
    url = line.split("\n") 
    puts url 
    # Remove line from this file amd move it to processed.txt 
    end 
end 

ответ

1

Вы можете сделать это следующим образом:

File.open('processed.txt', 'a') do |file| 
    open("names.txt") do |csv| 
    csv.each_line do |line| 
     url = line.chomp 
     # Do something interesting with url... 
     file.puts url 
    end 
    end 
end 

Это приведет к processed.txt, содержащей всем URLs, которые были обработаны с этим кодом ,

Примечание: Удаление линии с names.txt нецелесообразно с использованием этого метода. См. How do I remove lines of data in the middle of a text file with Ruby для получения дополнительной информации. Если это реальная цель этого решения, это будет гораздо более масштабная реализация с некоторыми соображениями проектирования, которые необходимо определить.

+0

Спасибо. Так как удаление строки нецелесообразно, можно ли добавить символ в начало строки (чтобы отметить его как завершенное?) – Onichan

+0

Это возможно, и если файл 'names.txt' будет (довольно) небольшим , мы могли бы переписать файл после обработки, опустив первую строку. Этот файл большой или он управляемый? –

+0

На самом деле, я думаю, что просто напишу текущую строку в новый файл с каждой итерацией цикла. Тогда я узнаю, какая строка была обработана. Это более практичный подход? – Onichan

1
def readput 
    @names = File.readlines("names.txt") 
    File.open("processed.txt", "w+") do |f| 
    f.puts(@names) 
    end 
end 
Смежные вопросы