0

在打开文件时使用链接方法的情况下,例如:

indata = open(from_file).read()

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

如果不是,最好的做法是改为:

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

1 回答 1

2

在打开文件时的链接方法的情况下

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

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

为什么是错的?

  1. 你在 GC 的摆布下关闭文件
  2. 如果发生异常,您可能不知道异常发生在哪里,打开或阅读时

另一段代码

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

也有它的陷阱。

  1. 如果发生异常,文件可能不会关闭
  2. 代码可能采用不同的路线,并且关闭语句可能不会被执行
于 2013-03-01T05:29:40.087 回答