「with」ステートメントを使用して複数のファイルを開く
Python でファイル I/O を操作する場合、「with open()」ステートメントは、ファイルを自動的に開閉する便利な方法を提供します。ただし、複数のファイルを同時に開く必要がある場合、従来のアプローチでは制限が発生する可能性があります。
次のコードでは、読み取り対象の入力ファイル 'oldfile' と 2 つのファイルを操作します。書き込む出力ファイル 'newfile'。
<code class="python">def filter(txt, oldfile, newfile): with open(oldfile, 'r', encoding='utf-8') as infile: with open(newfile, 'w') as outfile: # ...</code>
ご覧のとおり、ファイルを順番に開くには 'with' ステートメントをネストする必要があります。いずれかのファイルの操作中に例外が発生すると、問題が発生する可能性があります。
幸いなことに、Python には、単一の 'with' ステートメント内で複数の 'open()' ステートメントを使用するという、より効率的な解決策が用意されています。これは、ファイルをカンマで区切ることによって実現されます:
<code class="python">def filter(txt, oldfile, newfile): with open(newfile, 'w') as outfile, open(oldfile, 'r', encoding='utf-8') as infile: # ...</code>
この構文を使用すると、両方のファイルを同時に開き、それぞれ 'outfile' および 'infile' としてアクセスできます。さらに、「with」ブロックが終了するとファイルは自動的に閉じられ、適切なリソース管理が保証されます。
このアプローチにより、コードが簡素化され、ネストされた「with」ステートメントによって引き起こされる潜在的な問題が排除されます。これは、Python バージョン 2.7 および 3.1 以降でサポートされています。古い Python バージョンの場合は、contextlib.nested を使用するか、以前と同様に 'with' ステートメントをネストし続けることができます。
以上が「with」ステートメントを使用して複数のファイルを同時に開くにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。