如何评估文件是否已关闭?

时间:2014-04-29 14:32:39

标签: python file python-3.x

我写了以下内容:

y=open('S:\\02012014EASTERN.TXT','r').readlines()

我不知道文件现在是否已关闭。我该如何测试?

3 个答案:

答案 0 :(得分:10)

您无法对此进行测试,因为您从未存储过对文件对象的引用。

最好将文件对象用作上下文管理器,以确保文件对象将被关闭:

with open('S:\\02012014EASTERN.TXT','r') as ofh:
    y = ofh.readlines()

由于CPython使用引用计数,因此在您的代码中,文件对象将立即关闭并清除,但您可以在其他可能延迟垃圾收集的Python实现中依赖此行为。

答案 1 :(得分:3)

虽然其他答案为您提供了最佳方法(使用'with'语句),但如果您感到好奇,这就是您可以做的事情:

f = open('S:\\02012014EASTERN.TXT','r')
y = f.readlines()
print(f.closed)
f.close()
print(f.closed)

第一个'print'语句将产生'False',第二个'print'将产生'True'。

但是,再次,在“真实”代码中使用'with'构造。它会为你做结束。

答案 2 :(得分:2)

使用:

with open(file) as f:
     your code here

它会确保在__exit__语句块结束后调用with方法关闭文件。