1. ホーム
  2. python

[解決済み] with文の中に複数の変数がある?

2022-03-18 12:09:11

質問

を使用して複数の変数を宣言することは可能ですか? with ステートメントを使用できますか?

のようなものです。

from __future__ import with_statement

with open("out.txt","wt"), open("in.txt") as file_out, file_in:
    for line in file_in:
        file_out.write(line)

...それとも、2つのリソースを同時にクリーンアップすることが問題なのでしょうか?

解決方法は?

で可能です。 Python 3 v3.1以降 Python 2.7 . 新しい with 構文 は、複数のコンテキスト・マネージャをサポートしています。

with A() as a, B() as b, C() as c:
    doSomething(a,b,c)

とは異なり contextlib.nested を保証しています。 ab は、その __exit__() が呼び出された場合でも C() または __enter__() メソッドは例外を発生させます。

また、先の変数を後の定義で使用することも可能です(h/t アーマード 以下同様)。

with A() as a, B(a) as b, C(a, b) as c:
    doSomething(a, c)

Python 3.10時点のものです。 を使用すると、括弧を使用することができます。 :

with (
    A() as a, 
    B(a) as b, 
    C(a, b) as c,
):
    doSomething(a, c)