【问题标题】:Is it necessary to close files after writing JSON data to them in Python在Python中将JSON数据写入文件后是否需要关闭文件
【发布时间】:2016-07-29 23:10:03
【问题描述】:
如果我使用:
with open(Name, 'w') as outfile:
json.dump(json_object, outfile)
之后是否需要使用file.close()方法?
在一般情况下,例如在 python 中将普通字符串写入文件,不使用 file.close() 方法的后果是什么?
【问题讨论】:
标签:
python
json
python-2.7
file
【解决方案1】:
使用'with'结构的好处恰恰是你不必担心在这里关闭文件,因为当文件超出范围时它会自动关闭。
【解决方案2】:
在 cpython 中,文件在引用计数为零时关闭,即使您不使用 with 语句也是如此。根据您使用文件对象的方式,您冒着循环引用阻止这种情况发生的风险。但是在某些情况下,例如某些信号不会发生定期清理。在这种情况下,您可能会丢失本地进程文件缓冲区中尚未刷新的任何数据。
风险最小的解决方案是尽可能使用with 语句,否则使用清理文件的try/finally 块。