3

我通常使用:

f = open(path,'w')
print >> f, string
f.close()

但是,我在其他代码中看到:

print >> open(path,'w'), string

也很好用。

那么,如果使用“打印”打开文件,我们不必关闭文件?

4

1 回答 1

9

是的,您仍然需要关闭文件。与print没有区别。

关闭文件会将数据刷新到磁盘并释放文件句柄。

在 CPython 中,当f的引用计数降至零时,系统将为您执行此操作。在 PyPy、IronPython 和 Jython 中,您需要等待垃圾收集器运行(用于自动关闭文件)。与其采用依赖内存管理器自动关闭的脆弱做法,不如让您控制文件的关闭。

由于显式关闭文件是一种最佳实践,Python 为文件对象提供了一个上下文管理器,这使得它非常容易:

with open(path, 'w') as f:
    print >> f, string

当您离开with-statement的主体时,这将关闭您的文件。

于 2013-04-18T16:26:09.123 回答