Python 的“with open”语句是在上下文管理器中打开和使用文件的便捷方法。但是,默认情况下,它一次只允许打开一个文件。但是,如果您想同时修改或读取多个文件怎么办?
简短回答:从 Python 2.7 或 3.1 开始,您可以简单地列出多个不带“and”关键字的“with open”语句:
with open('a', 'w') as a, open('b', 'w') as b: # Perform actions on file handles 'a' and 'b'
在早期的Python版本中,您可以使用“contextlib.nested() " 嵌套上下文管理器的方法。但是,不建议在打开多个文件时使用这种方法。
对于需要一次打开可变数量文件的情况,Python 3.3 引入了“contextlib.ExitStack” “上下文管理器。这允许您将多个文件对象添加到堆栈中并按正确的顺序退出:
import contextlib with contextlib.ExitStack() as stack: files = [stack.enter_context(open(fname)) for fname in filenames] # Work with 'files' here
请记住,在大多数情况下,它更高效且更惯用按顺序处理文件。例如,您可以使用循环来单独打开和处理每个文件:
for fname in filenames: with open(fname) as f: # Process file 'f' here
以上是如何使用Python的'with open”语句同时打开多个文件?的详细内容。更多信息请关注PHP中文网其他相关文章!