从Python 2.7(或分别为3.1)开始,你可以编写
with open('a', 'w') as a, open('b', 'w') as b:
do_something()
在早期版本的Python中,有时可以使用contextlib.nested()
嵌套上下文管理器。但是,这对于打开多个文件无法正常工作-有关详细信息,请参见链接的文档。
在极少数情况下,你想同时打开全部数量不定的文件,可以使用contextlib.ExitStack
从Python 3.3版开始的:
with ExitStack() as stack:
files = [stack.enter_context(open(fname)) for fname in filenames]
# Do something with "files"