ファイル全体の各行を反復処理したいです。これを行う 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 つだけ) あるはずです。