簡體   English   中英

readlines() 是否關閉文件?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM