大きなファイルを行ごとに読み取るにはどうすればいいですか? 質問する

大きなファイルを行ごとに読み取るにはどうすればいいですか? 質問する

ファイル全体の各行を反復処理したいです。これを行う 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

助言がありますか?

目的は、ペアワイズ文字列類似度を計算することです。つまり、ファイル内の各行について、他のすべての行とのレーベンシュタイン距離を計算します。

2022年11月編集:この質問の8か月後に尋ねられた関連質問には、多くの有用な回答とコメントがあります。Pythonロジックをより深く理解するには、この関連質問も読んでください。Python でファイルを行ごとに読み取るにはどうすればよいでしょうか?

ベストアンサー1

ファイルを読み取る正しい、完全に Python 的な方法は次のとおりです。

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

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

それを実行する明白な方法が 1 つ (できれば 1 つだけ) あるはずです。

おすすめ記事