foo*_*ion 29 python garbage-collection file
我经常看到类似的python代码
for line in open(filename):
do_something(line)
Run Code Online (Sandbox Code Playgroud)
文件名何时被此代码关闭?
写作会更好吗?
with open(filename) as f:
for line in f.readlines():
do_something(line)
Run Code Online (Sandbox Code Playgroud)
Est*_*ber 36
filename
当它超出范围时将被关闭.这通常是方法的结束.
是的,最好使用with
.
获得文件对象后,可以通过调用此对象的方法来执行所有文件I/O. [...]完成文件后,您应该通过调用
close
对象上的方法来完成,以关闭与文件的连接:Run Code Online (Sandbox Code Playgroud)input.close()
在简短的脚本中,人们经常省略这一步骤,因为Python在垃圾收集期间回收文件对象时自动关闭文件(在主流Python中意味着文件几乎立即关闭,尽管其他重要的Python实现,例如Jython和IronPython,有其他更轻松的垃圾收集策略).然而,尽快关闭文件是一种很好的编程习惯,在大型程序中尤其是一个好主意,否则可能会有更多无用的打开文件的风险.请注意
try
/finally
特别适合于确保文件被关闭,即使函数由于未捕获的异常而终止.
下降.readlines()
.对于大型文件(由于内存消耗),它是多余的并且是不合需要的.带'with'
块的变体总是关闭文件.
with open(filename) as file_:
for line in file_:
do_something(line)
Run Code Online (Sandbox Code Playgroud)
当文件将在裸'for'
循环变体中关闭时,取决于Python的实现.
归档时间: |
|
查看次数: |
54014 次 |
最近记录: |