在Python中关闭文件

时间:2014-07-22 00:05:10

标签: python

如果在CPython中,当引用计数器降到零时,对象空间立即回收关闭文件的重要程度是多少?我的意思是如果f是一个文件对象,我做f = 10那么文件对象空间将自动回收并关闭将被调用。

1 个答案:

答案 0 :(得分:1)

虽然CPython可以根据引用计数处理对象内存回收,但是一旦不再需要文件就可以释放文件等外部资源。

摘自https://docs.python.org/2/tutorial/inputoutput.html

""" 完成文件后,调用f.close()将其关闭并释放打开文件占用的所有系统资源。在调用f.close()之后,尝试使用该文件对象将自动失败。

>>>
>>> f.close()
>>> f.read()
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
ValueError: I/O operation on closed file

在处理文件对象时,最好使用with关键字。这样做的好处是,即使在路上引发异常,文件也会在套件完成后正确关闭。它也比编写等效的try-finally块短得多:

>>>
>>> with open('workfile', 'r') as f:
...     read_data = f.read()
>>> f.closed
True

&#34;&#34;&#34;