使用链式方法关闭文件句柄

时间:2013-03-01 05:27:33

标签: python python-2.7

在打开文件时使用链式方法,例如:

indata = open(from_file).read()

是否有必要(或可能)关闭使用open()功能打开的文件句柄?

如果没有,最好的做法是:

infile = open(from_file)
indata = infile.read()
infile.close()

1 个答案:

答案 0 :(得分:2)

  

打开文件时使用链式方法

这是打开文件的链式方法的缺陷,因此建议的解决方案是使用with clause。对象的生命周期在with块内,fileObj自动关闭

with open(from_file) as fin:
    indata = fin.read()

为什么这是错的?

  1. 你受GC关闭文件的摆布
  2. 如果发生异常,您可能无法在打开或阅读时知道异常发生的位置
  3. 另一个代码

    infile = open(from_file)
    indata = infile.read()
    infile.close()
    

    也有它的陷阱。

    1. 如果发生异常,则可能无法关闭该文件
    2. 代码可能采用不同的路径,而密切的声明可能不会被提及