通常,需要在文件对象上调用.close()方法,或使用“ with open”构造来确保它已关闭。
但是,我想知道是否这样写入文件会导致文件关闭:
open(path,'w').writelines(fileContents)
答案 0 :(得分:5)
否,open(path,'w').writelines(fileContents)
不会关闭文件。即使文件对象是匿名对象并且未分配任何内容,它也处于打开状态。如果CPython超出范围,它将清理该句柄。
此外,我认为必须进行垃圾回收,垃圾回收可能在一个块的末尾发生(可能会或可能不会发生)(通常会发生,但是没有授权或保证AFAIK)。当文件超出范围时,其他Python解释器可能会或可能不会关闭文件,因此对于一般的Python代码,请不要依赖该机制。
最好只使用with
惯用语并加以使用。在处理文件描述符时,很少有不使用with
的原因。