ホームページ >バックエンド開発 >Python チュートリアル >Python ファイルの反復が最初のパス後に失敗するのはなぜですか?

Python ファイルの反復が最初のパス後に失敗するのはなぜですか?

DDD
DDDオリジナル
2024-12-04 05:09:14348ブラウズ

Why Does My Python File Iteration Fail After the First Pass?

初期パス後のファイル反復の困難

プログラミングでは、ファイルの反復処理が一般的なタスクです。ただし、予期しない動作が発生する場合があります。この場合、Python でファイルを反復処理すると、最初は機能しますが、その後は出力が得られません。これは、次のコードで例示されます。

import codecs
file = codecs.open('baby1990.html', 'r',encoding='utf-8', errors='ignore')
for line in file.readlines():
    print(line)

このコードを実行すると、ファイルの内容が正しく出力されます。ただし、file.readlines() の for line を使用して同じファイルを再度反復しようとすると、出力は生成されません。

この動作は、ファイル反復の性質に起因します。ファイルを反復処理する場合、ファイルの読み取りを担当するポインタは、ファイルの終わりに到達するまで進みます。最初の反復では、ポインタはファイルの先頭から末尾まで進みます。 2 回目の反復を試行すると、ポインタはまだファイルの末尾にあり、これ以上読み取るデータはありません。

この問題を解決するには、ファイル ポインタを先頭にリセットする必要があります。これは、 f.seek(0) メソッドを使用してポインターの位置を明示的に変更するか、ファイルを閉じて再度開くことによって実現できます。

あるいは、Python の with ステートメントを使用して、ファイルの終了後にファイルを自動的に閉じることもできます。実行すると、ファイル ポインタが確実にリセットされます。例は次のとおりです。

with codecs.open('baby1990.html', 'r',encoding='utf-8', errors='ignore') as file:  
    for line in file.readlines():  
        print(line)  

このコードでは、同じ問題が発生することなく複数の反復が可能です。

以上がPython ファイルの反復が最初のパス後に失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。