加入收藏 | 设为首页 | 会员中心 | 我要投稿 商洛站长网 (https://www.0914zz.com/)- AI应用、CDN、边缘计算、云计算、物联网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 逐行文件处理,for-loop vs with

发布时间:2021-02-21 13:20:31 所属栏目:Python 来源:互联网
导读:我正在努力了解这些之间的折衷/差异 打开文件进行逐行处理的方法 with open(data.txt) as inf: for line in inf: #etc VS for line in open(data.txt): # etc 我明白使用确保文件关闭时 “with-block”(suite?)被退出(或异常被反驳).所以我一直在使用,因为我

我正在努力了解这些之间的折衷/差异
打开文件进行逐行处理的方法

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

VS

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

我明白使用确保文件关闭时
“with-block”(suite?)被退出(或异常被反驳).所以我一直在使用,因为我在这里学到了.

Re for-loop:从搜索网络和SO,似乎是否文件
当循环退出时是关闭的是实现依赖的?和
我找不到关于这个结构如何处理的任何东西
例外.有人知道吗?

如果我错了以上的任何东西,我会欣赏更正,
否则有理由永远用于构建
用? (假设你有选择,即不受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 open('data.txt') as inf:
    for line in inf:
       #etc

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

(编辑:商洛站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读