2016-05-13 4 views
1

名前リスト(names.txt)が行単位で区切られています。私は各行をループした後、別のファイル(processed.txt)に移動したいと思います。各ラインをループにテキストファイルを別のテキストファイルに移動する

私の現在の実装:これは、このコードで処理されたURLの全てを含むprocessed.txtになります

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 

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

あなたはこのようにそれを行うことができます。

注: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 
関連する問題