1. ホーム
  2. パイソン

[解決済み】大きなテキストファイルをメモリに読み込まずに一行ずつ読むにはどうしたらいいですか?

2022-03-30 18:17:41

質問

大きなファイルを一行ずつ読む必要があります。例えば、そのファイルが5GB以上あり、各行を読み取る必要があるとします。 readlines() なぜなら、メモリ上に非常に大きなリストが作成されるからです。

この場合、以下のコードはどのように動作するのでしょうか?はたして xreadlines を1つずつメモリに読み込んでいるのでしょうか?ジェネレータ式は必要ですか?

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/

そして

" テキストファイルの行単位での Python 先頭、後尾、後方読み出し "

どちらもとてもうまくいきました

解決方法は?

Keithの回答は簡潔ですが、ファイルを閉じていないため、この回答を提供しました。 明示的に

with open("log.txt") as infile:
    for line in infile:
        do_something_with(line)