Python で複数のファイルを開くためのコンテキスト マネージャー
Python の with open ステートメントは、with ブロックの終了時にファイルを自動的に閉じることで、ファイル操作を効果的に管理します。ただし、すべてのファイルに確実に書き込むことができるようにする場合、連続した with open ステートメントを使用して複数のファイルを開くと課題が生じます。
複数の open ステートメントを組み合わせる
構文質問に示されている、およびキーワードを使用してオープンステートメントと組み合わせようとする試みは無効です。目的の機能を実現するために、Python 2.7 (または 3.1) 以降のバージョンでは、複数の with open ステートメントをカンマで簡単に区切ることができる変更が導入されました。
with open('a', 'w') as a, open('b', 'w') as b: do_something()
この構文は、複数のファイルのコンテキストを正しく管理します。 with ブロックが終了するとそれらを閉じます。
変数の数の代替ファイル
可変数のファイルを開く必要がある場合、contextlib.ExitStack クラスは Python 3.3 以降のソリューションを提供します。
with ExitStack() as stack: files = [stack.enter_context(open(fname)) for fname in filenames] # Do something with "files"
Sequentialファイルを同時に開く場合と比較
複数のファイルを開く場合は、次の点に注意することが重要です。同時に行うことが常に理想的であるとは限りません。ほとんどの場合、ファイルを順番に処理する方が一般的なアプローチです。
for fname in filenames: with open(fname) as f: # Process f
このアプローチにより、リソース管理とファイル ロックに関連する潜在的な問題が回避されます。
以上がPython で 1 つの `with open` ステートメントで複数のファイルを開くにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。