繁体   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