Python では、with open ステートメントを使用して、構造化コンテキスト内でファイル操作を処理するエレガントな方法が提供されます。これにより、ファイルを明示的に開いたり閉じたりする必要がなくなり、ブロックの終了時にリソースが適切に解放されるようになります。
しかし、複数のファイルを同時に変更またはアクセスする必要がある場合はどうすればよいでしょうか?次の質問では、このシナリオについて説明します。
複数のファイルを同時に変更したいのですが、すべてのファイルに正常に書き込むことができる場合に限ります。 with ステートメント内で複数の open 呼び出しを結合できますか?
Python バージョン 2.7 および 3.1 以降では、答えははっきりと「はい」です。
with open('a', 'w') as a, open('b', 'w') as b: do_something()
この簡潔な構文により、複数のファイルを開くことができます同じコンテキスト マネージャー内で、すべてのコンテキスト マネージャーを同時に操作できるようになります。
ダイナミック コンテキスト マネージャーを開く必要がある場合ファイルの数に応じて、Python 3.3 ではさらに汎用性の高いソリューション contextlib.ExitStack が導入されています。
with ExitStack() as stack: files = [stack.enter_context(open(fname)) for fname in filenames] # Do something with "files"
このアプローチにより柔軟性が高まり、単一のコンテキスト ブロック内でファイルのコレクションを動的に開いて管理できるようになります。
また、ファイルを順次処理することが要件の場合、より簡単なアプローチは、ファイルを反復処理して各ループ内でファイルを開くことです。 iteration:
for fname in filenames: with open(fname) as f: # Process f
この順次アプローチにはシンプルさという利点があり、多数のファイルを処理する場合により適している可能性があります。
以上がPython で「with open」を使用して複数のファイルを同時に開くことはできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。