如果我没有初始化文件,如何关闭文件?

时间:2013-07-01 07:36:13

标签: python file io

如果我做了以下事情:

import codecs
lines = codecs.open(somefile, 'r','utf8').readlines()

有没有办法关闭我尚未初始化的文件?如果是这样,怎么样?通常,我本可以做到:

import codecs
reader = codecs.open(somefile, 'r','utf8') 
lines = reader.readlines()
reader.close()

1 个答案:

答案 0 :(得分:6)

在CPython中,一旦引用计数降为0(即.readlines()返回后),文件对象将自行关闭。对于其他Python实现,可能需要更长的时间,具体取决于所使用的垃圾收集算法。该文件肯定会在程序退出之前关闭。

您确实应该将文件对象用作上下文管理器,并在其上关闭with语句调用:

with codecs.open(somefile, 'r','utf8') as reader:
    lines = reader.readlines()

只要在with语句下缩进的代码块退出(有异常,returncontinuebreak语句,或者只是因为

额外提示:文件对象是可迭代的,因此以下也适用:

reader

得到完全相同的结果。