我喜欢with
Python 2.7中多重上下文语句的便利性:
with open('a.txt') as a, open('b.txt') as b:
do_many_amazing_things(a, b)
Run Code Online (Sandbox Code Playgroud)
但是,我需要保持与2.6的兼容性.
with
被带到2.5通过__future__
,但我无法找到任何关于在文档中反向移植到2.6的多个上下文版本.
我错过了什么吗?
编辑:我知道可以嵌套with
语句.我在问是否可以使用多个with语句.
jsv*_*svk 20
如果没有可能的向后兼容等价物,我会通过使多上下文with
语句成为一组单上下文嵌套with
语句来处理它.
with open('a.txt') as a:
with open('b.txt') as b:
do_many_amazing_things(a, b)
Run Code Online (Sandbox Code Playgroud)
编辑以解决您的编辑:
如果您坚持不嵌套额外的with
语句,您可以随时使用contextlib
import contextlib
with contextlib.nested(open("a.txt"), open("b.txt")) as (a, b):
do_many_amazing_things(a,b)
Run Code Online (Sandbox Code Playgroud)
至于使用with
未来导入的多个语句,with
据我所知,这是不可能的