1. ホーム
  2. python

[解決済み] 大きなファイルを一行ずつ読むには?

2022-03-17 11:31:20

質問

ファイル全体の各行を反復処理したい。これを行う1つの方法は、ファイル全体を読み込んでリストに保存し、それから関心のある行を調べることです。この方法は多くのメモリを使用するので、代替方法を探しています。

これまでの私のコード

for each_line in fileinput.input(input_file):
    do_something(each_line)

    for each_line_again in fileinput.input(input_file):
        do_something(each_line_again)

このコードを実行すると、エラーメッセージが表示されます。 device active .

何かご意見はありますか?

つまり、ファイルの各行について、他のすべての行とのレーベンシュタイン距離を計算したいのです。

どのように解決するのですか?

正しい、完全にPythonicなファイルの読み方は以下の通りです。

with open(...) as f:
    for line in f:
        # Do something with 'line'

with ステートメントは、インナーブロック内で例外が発生した場合を含め、 ファイルのオープンとクローズを処理します。また for line in f は、ファイルオブジェクト f は反復可能で、自動的にバッファードI/Oとメモリ管理を使用するので、大きなファイルを心配する必要はありません。

<ブロッククオート

それを行うための明白な方法が1つ--できれば1つだけ--あるはずです。