语句中Python中的多个variables
是否有可能在Python中使用with
语句声明多个variables?
就像是:
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
语法支持多个上下文pipe理器:
with A() as a, B() as b, C() as c: doSomething(a,b,c)
与__exit__()
不同的是,即使C()
或它的__enter__()
方法引发exception,这也保证了a
和b
将__exit__()
。
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现在直接支持这个function(没有混淆错误的怪癖)。
有关更多信息,请参阅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)