Lev*_*von 14 python file-io for-loop with-statement
我试图理解这些与逐行处理打开文件的方式之间的权衡/差异
with open('data.txt') as inf:
for line in inf:
#etc
Run Code Online (Sandbox Code Playgroud)
VS
for line in open('data.txt'):
# etc
Run Code Online (Sandbox Code Playgroud)
我理解使用with确保在退出"with-block"(套件?)(或者反对异常)时文件被关闭.with自从我在这里学到它以来,我一直在使用.
重新for-loop:来自各地的净等搜索,似乎无论是当文件被关闭for-loop退出取决于具体的实现?我找不到任何关于这个结构如何处理异常的信息.有人知道吗?
如果我对上述任何事情都有误,我会欣赏更正,否则是否有理由使用该for结构
with?(假设你有一个选择,即不受Python版本的限制)
Joh*_*ooy 29
这个问题
for line in open('data.txt'):
# etc
Run Code Online (Sandbox Code Playgroud)
是不是你没有明确引用打开的文件,那你怎么关闭呢?懒惰的方式是等待垃圾收集器清理它,但这可能意味着资源没有及时释放.
所以你可以说
inf = open('data.txt')
for line in inf:
# etc
inf.close()
Run Code Online (Sandbox Code Playgroud)
现在如果你在for循环中有异常会发生什么?该文件不会显式关闭.
添加一个 try/finally
inf = open('data.txt')
try:
for line in inf:
# etc
finally:
inf.close()
Run Code Online (Sandbox Code Playgroud)
这是很多代码来做一些非常简单的事情,因此添加with了Python 以使代码能够以更易读的方式编写.这让我们来到这里
with open('data.txt') as inf:
for line in inf:
#etc
Run Code Online (Sandbox Code Playgroud)
所以,这是打开文件的首选方式.如果您的Python对于with语句来说太旧了,那么您应该使用该try/finally版本的生产代码
| 归档时间: |
|
| 查看次数: |
27071 次 |
| 最近记录: |