ホームページ >バックエンド開発 >Python チュートリアル >Python の単一の `with` ステートメント内で複数のファイルを開くにはどうすればよいですか?

Python の単一の `with` ステートメント内で複数のファイルを開くにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-10-30 17:47:31519ブラウズ

How can I open multiple files within a single `with` statement in Python?

単一の with ステートメントで複数のファイルを開く

with ステートメントを使用して Python でファイルの入出力を実行する場合、いくつかのテクニックがあります。コードを最適化するために使用できます。このような手法の 1 つは、同じ with ブロック内で複数のファイルを開くことです。これは、入力ファイルと出力ファイルを同時に操作する場合に特に便利です。

ブロックでネスト

Python の以前のバージョン (2.5 や 2.6 など) では、次のことが必要でした。複数のファイル操作のためにブロックでネストします。たとえば、次の例を考えてみましょう。

<code class="python">def filter(txt, oldfile, newfile):
    with open(newfile, 'w') as outfile:
        with open(oldfile, 'r', encoding='utf-8') as infile:
            for line in infile:
                # ...</code>

このコードでは、open 関数が 2 回呼び出され、入力と出力用に別々のファイル オブジェクトが作成されます。

カンマ区切りのオープン() ステートメント

ただし、Python 2.7 および 3.1 以降では、単一の with ブロック内で複数の open() ステートメントをカンマで区切ることで、このプロセスを簡素化できます:

<code class="python">def filter(txt, oldfile, newfile):
    with open(newfile, 'w'), open(oldfile, 'r', encoding='utf-8') as (outfile, infile):
        for line in infile:
            # ...</code>

この簡潔な構文により、複数のファイルを同時に操作できるため、コードの可読性が大幅に向上し、インデント レベルが削減されます。

その他の考慮事項

Python 関数から明示的に返すことは次のとおりであることに注意してください。言語は最後に関数を自動的に終了するため、不要です。さらに、コードが Python バージョン 2.5、2.6、または 3.0 をサポートする必要がある場合は、互換性を確保するためにカンマ区切りのアプローチを使用する代わりに、ブロックでネストすることを検討してください。

以上がPython の単一の `with` ステートメント内で複数のファイルを開くにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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