在Python中关闭文件的不同方法

Tom*_*uiz 0 python

通常需要在文件对象上调用.close()方法或使用"with open"构造来确保它被关闭.

但是,我想知道写入这样的文件是否会使文件关闭:

open(path,'w').writelines(fileContents)
Run Code Online (Sandbox Code Playgroud)

Mat*_*ith 5

不,open(path,'w').writelines(fileContents)不关闭文件.它处于打开状态,即使文件对象是匿名的,也没有分配给任何东西.如果句柄超出范围,CPython将清理句柄.

此外,我相信垃圾收集必须发生,这可能会或可能不会发生在一个块的结尾(它通常会发生,但没有授权或保证AFAIK).当其超出范围时,其他Python解释器可能会也可能不会关闭该文件,因此不要依赖该机制来处理常规Python代码.

最好只使用这个with成语并完成它.with在处理文件描述符时,很少有理由不使用.