with-statement函数是否关闭文件?

时间:2014-11-20 20:04:00

标签: python with-statement

在这个简单的文件IO操作中,x.txt结束时f.read关闭了吗? 另外,我如何检查该文件是否仍然打开?

with open("x.txt") as f:
    data = f.read()

2 个答案:

答案 0 :(得分:3)

Documentation

  

最好在处理文件时使用with关键字   对象。这样做的好处是文件在之后正确关闭   即使在途中出现异常,它的套件也会完成。它是   也比编写等效的try-finally块短得多:

答案 1 :(得分:2)

当控件离开with语句的代码块时,f引用的文件对象将被关闭。实际上,这就是您首先使用with语句打开文件的原因。除了在完成后自动关闭文件,该构造没有用处。

您可以打印f.closed flag

自行测试
with open("x.txt") as f:
    data = f.read()
    ## Still inside with block ##
    print f.closed  # Output: False

## Outside of with block ##
print f.closed  # Output: True