2016-05-13 159 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包含一切與此代碼處理的網址。

注意:使用此方法從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 
相關問題