<分区>
在用 Python 编码时,我有时会使用这种语法:
open(filename,'w').write("sometext")
据我所知,这会导致 Python 的垃圾收集器关闭文件,但我听说 GC 的行为未定义,这可能会有问题。
这是真的吗?我应该一直使用这个吗:
with open(filename) as f:
f.write()
<分区>
在用 Python 编码时,我有时会使用这种语法:
open(filename,'w').write("sometext")
据我所知,这会导致 Python 的垃圾收集器关闭文件,但我听说 GC 的行为未定义,这可能会有问题。
这是真的吗?我应该一直使用这个吗:
with open(filename) as f:
f.write()
最佳答案
不要混淆垃圾收集和引用计数。
虽然没有正式保证,但至少在 CPython 中,使用 open(...).write(...)
会产生所需的行为,因为在该行完成后,ref-文件对象的计数降为 0,立即将其删除。
话虽如此,不要这样做。使用 with
语句更加优雅/可读/pythonic,显式优于隐式。
关于python - 关闭未保存到变量的文件不是 Python 中的坏习惯吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23596172/