'与'语句中的多个变量
是否有可能在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
,这保证了a
和b
将有自己的__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