大きなファイルを1行ずつ読み取る必要があります。ファイルのサイズが5GBを超えていて、各行を読み取る必要があるとしましょう。ただしreadlines()
、メモリ内に非常に大きなリストが作成されるため、使用したくありません。
この場合、以下のコードはどのように機能しますか?されxreadlines
、それ自体がメモリに一つずつ読んで?ジェネレータ式は必要ですか?
f = (line for line in open("log.txt").xreadlines()) # how much is loaded in memory?
f.next()
さらに、Linux tail
コマンドと同じように、これを逆の順序で読み取るにはどうすればよいですか?
私が見つけた:
http://code.google.com/p/pytailer/
そして
両方とも非常にうまくいきました!