我喜欢withPython 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据我所知,这是不可能的
| 归档时间: |
|
| 查看次数: |
7086 次 |
| 最近记录: |