[英]Does readlines() close the file?
執行后是否需要關閉文件:
lines = open(fname).readlines()
還是readlines()
在讀取數據后關閉文件? 如果沒有,應該如何關閉?
憑經驗檢查readlines
是否關閉文件很容易:
>>> f = open("so.py")
>>> lines = f.readlines()
>>> f.closed
False
>>> f.close()
>>> f.closed
True
一點想法表明readlines
不應該關閉文件:即使在 EOF 處使用文件“書簽”,也有一些有用的命令,從seek
開始。
不,該方法本身不會自動關閉文件。 在某些時候(可靠嗎?),如果您的代碼中沒有更多引用它,它將被關閉,但這不是由readlines
方法完成的。 您可以明確地關閉:
f = open(...)
lines = f.readlines()
f.close()
或者:
lines = []
with open(...) as f:
lines = f.readlines()
或者依靠垃圾收集器為你做這件事,不維護對文件 object 的任何引用:
lines = open(...).readlines()
這是您已經擁有的,並且在大多數情況下可能會很好。 我不知道垃圾收集器給你的保證水平。
如果你真的想要的話,你可以使用with
語句,這將關閉文件而無需調用f.close()
。 (有關在 Python 中使用with
的指導,請參閱此處。)但@mypetition 的答案肯定是最不痛苦的選擇。
它不會關閉文件,但您不必擔心,您的文件將在垃圾收集之前自動關閉。
CPython 使用引用計數來清除對象,顯然沒有指向open
返回的 object 的變量,因此它將被垃圾收集,並且 python 在此之前關閉它們。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.