gpt4 book ai didi

python - 一次打开多个(未指定数量)文件并确保它们正确关闭

转载 作者:IT老高 更新时间:2023-10-28 20:47:39 24 4
gpt4 key购买 nike

我知道我可以打开多个文件,例如,

with open('a', 'rb') as a, open('b', 'rb') as b:

但我有一种情况,我有一个要打开的文件列表,我想知道当文件数量事先未知时,做同样事情的首选方法是什么。类似的,

with [ open(f, 'rb') for f in files ] as fs:

(但由于列表没有实现 __exit__,因此失败并出现 AttributeError)

我不介意使用类似的东西,

try:
fs = [ open(f, 'rb') for f in files ]

....

finally:
for f in fs:
f.close()

但我不确定如果在尝试打开某些文件时抛出一些文件会发生什么。 fs 是否会在 finally block 中正确定义,以及确实设法打开的文件?

最佳答案

不,您的代码不会初始化 fs,除非所有 open() 调用都成功完成。不过这应该可行:

fs = []
try:
for f in files:
fs.append(open(f, 'rb'))

....

finally:
for f in fs:
f.close()

还要注意 f.close() 可能会失败,因此您可能想要捕获并忽略(或以其他方式处理)那里的任何失败。

关于python - 一次打开多个(未指定数量)文件并确保它们正确关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7945182/

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