'与'语句中的多个变量

是否有可能在Python中使用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)

...或者在同一时间清理两个资源的问题?


从v3.1和Python 2.7开始,它可能在Python 3中。 新with语法支持多个上下文管理器:

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

不像contextlib.nested ,这保证了ab将有自己的__exit__()的调用,即使C()或它的__enter__()方法会引发异常。


contextlib.nested支持这个:

import contextlib

with contextlib.nested(open("out.txt","wt"), open("in.txt")) as (file_out, file_in):

   ...

更新:
引用关于contextlib.nested的文档:

自2.7版弃用:with-statement现在直接支持此功能(没有令人困惑的错误倾向)。

有关更多信息,请参阅RafałDowgird的答案。


我想你应该这样做:

from __future__ import with_statement

with open("out.txt","wt") as file_out:
    with open("in.txt") as file_in:
        for line in file_in:
            file_out.write(line)
链接地址: http://www.djcxy.com/p/51683.html

上一篇: Multiple variables in Python 'with' statement

下一篇: When is JavaScript's eval() not evil?