如果在Python中使用'print'打开文件,则无需关闭文件?

bay*_*ule 3 python file

我通常使用:

f = open(path,'w')
print >> f, string
f.close()
Run Code Online (Sandbox Code Playgroud)

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

print >> open(path,'w'), string
Run Code Online (Sandbox Code Playgroud)

也运作良好.

那么,如果用'print'打开文件,我们不必关闭文件?

Ray*_*ger 9

是的,您仍然需要关闭该文件.印刷没有区别.

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

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

由于显式关闭文件是最佳实践,因此Python为文件对象提供了一个上下文管理器,使其变得非常简单:

with open(path, 'w') as f:
    print >> f, string
Run Code Online (Sandbox Code Playgroud)

当你离开with语句的主体时,这将关闭你的文件.

  • +1:喜欢你进入细节不仅包括CPython. (3认同)