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