不在Python中关闭打开文件会有什么后果?

时间:2013-04-18 11:27:36

标签: python file io

我已经看到在Python中使用文件的最佳做法是使用with块:

with open('file', 'r') as fi:
 text = fi.read()

with open('file', 'w') as fi:
  fi.write(text)

这样,文件在完成后会自动关闭。但是我很懒,而且在快速的一次性脚本中,我倾向于这样做:

text = open('file', 'r').read()
open('file', 'w').write(text)

现在很明显,如果我正在编写Real Software™,我应该使用前者,但我想知道后者有什么后果(如果有的话)?

1 个答案:

答案 0 :(得分:6)

在CPython上:无;当引用计数降至0时,文件将被关闭,这是.read().write()调用返回时的立即。

在其他不使用引用计数的Python实现上,文件将保持打开状态,直到收集垃圾。