在 Python 中打开多个文件的上下文管理器
Python 的 with open 语句通过在 with 块退出时自动关闭文件来有效管理文件操作。但是,如果您想确保所有文件都可以写入,那么使用连续的 with open 语句打开多个文件会带来挑战。
组合多个 open 语句
语法问题中提出的尝试将 open 语句与 and 关键字结合起来是无效的。为了实现所需的功能,Python 2.7(或3.1)及更高版本引入了一项更改,允许您简单地用逗号分隔多个 with open 语句:
with open('a', 'w') as a, open('b', 'w') as b: do_something()
此语法正确管理多个文件的上下文,当 with 块退出时关闭它们。
Variable Number of 的替代方案文件
如果您可能需要打开可变数量的文件,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
这种方法避免了与资源管理和文件锁定相关的潜在问题。
以上是如何在 Python 中使用单个'with open”语句打开多个文件?的详细内容。更多信息请关注PHP中文网其他相关文章!