gpt4 book ai didi

python - 逐行文件处理,for循环与with

转载 作者:太空狗 更新时间:2023-10-29 17:13:00 25 4
gpt4 key购买 nike

我试图了解这些之间的权衡/差异逐行处理打开文件的方法

with open('data.txt') as inf:
for line in inf:
#etc

对比

for line in open('data.txt'):
# etc

我知道使用 with 确保文件在“with-block”(套件?)退出(或反驳异常)。所以自从我在这里了解到 with 以来,我一直在使用它。

Re for-loop: 网上搜了一圈SO,好像是文件当 for 循环退出时关闭是否依赖于实现?和我找不到关于这个结构如何处理的任何信息异常(exception)。有人知道吗?

如果我对以上任何内容有误,我将不胜感激,否则有理由在? (假设您有选择,即不受 Python 版本限制)

最佳答案

这个问题

for line in open('data.txt'):
# etc

是不是你没有保留对打开文件的显式引用,那么你如何关闭它?懒惰的方法是等待垃圾收集器清理它,但这可能意味着资源没有及时释放。

所以你可以说

inf = open('data.txt')
for line in inf:
# etc
inf.close()

现在,如果在 for 循环中出现异常怎么办?该文件不会明确关闭。

添加一个try/finally

inf = open('data.txt')
try:
for line in inf:
# etc
finally:
inf.close()

这是很多代码来做一些非常简单的事情,所以 Python 添加了 with 以使这段代码能够以更易读的方式编写。这让我们来到这里

with open('data.txt') as inf:
for line in inf:
#etc

因此,这是打开文件的首选方式。如果您的 Python 对于 with 语句来说太旧,您应该使用 try/finally 版本的生产代码

关于python - 逐行文件处理,for循环与with,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11130312/

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