如何在Python中使用“with open”打开多个文件?

2024-03-08

我想一次更改几个文件,iff我可以写信给他们所有人。我想知道是否可以以某种方式将多个开放调用与with陈述:

try:
  with open('a', 'w') as a and open('b', 'w') as b:
    do_something()
except IOError as e:
  print 'Operation failed: %s' % e.strerror

如果这是不可能的,那么这个问题的优雅解决方案会是什么样子呢?


从 Python 2.7(或 3.1)开始,你可以写

with open('a', 'w') as a, open('b', 'w') as b:
    do_something()

(历史记录:在早期版本的Python中,有时可以使用contextlib.nested() http://docs.python.org/library/contextlib.html#contextlib.nested嵌套上下文管理器。这不会按预期打开多个文件,通过 - 请参阅链接文档了解详细信息。)


在极少数情况下,您想同时打开可变数量的文件,您可以使用contextlib.ExitStack https://docs.python.org/3/library/contextlib.html#contextlib.ExitStack,从Python 3.3版本开始:

with ExitStack() as stack:
    files = [stack.enter_context(open(fname)) for fname in filenames]
    # Do something with "files"

请注意,更常见的是,您希望按顺序处理文件,而不是同时打开所有文件,特别是如果您的文件数量可变:

for fname in filenames:
    with open(fname) as f:
        # Process f
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在Python中使用“with open”打开多个文件? 的相关文章

随机推荐