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