我写了以下内容:
y=open('S:\\02012014EASTERN.TXT','r').readlines()
我不知道文件现在是否已关闭。我该如何测试?
答案 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
方法关闭文件。