gpt4 book ai didi

python - 使用 with/as 上下文管理器打开文件列表

转载 作者:太空狗 更新时间:2023-10-29 16:54:31 25 4
gpt4 key购买 nike

注意:我知道

with open('f1') as f1, open('f2') as f2:
...

语法。这是一个不同的问题。


给定一个字符串列表 file_names 是否有一种方法可以使用 with/as 使用一行打开其中的每个文件名。比如:

with [open(fn) for fn in file_names] as files:
# use the list of files

这当然不起作用,因为它试图在列表中使用上下文管理器。列表的长度可能直到运行时才知道,例如 sys.argv[1:]

最佳答案

如果您可以访问 Python 3.3+,则有一个专门为此目的设计的特殊类:ExitStack .它的工作方式与您预期的一样:

with contextlib.ExitStack() as stack:
files = [stack.enter_context(open(fname)) for fname in filenames]
# All opened files will automatically be closed at the end of
# the with statement, even if attempts to open files later
# in the list raise an exception

关于python - 使用 with/as 上下文管理器打开文件列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19412376/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com