方法1:
json.dump(object, file('object.json', 'w'))
方法2:
f = file('object.json', 'w')
json.dump(object, f)
f.close()
我经常使用方法2将对象转储到json文件,但它看起来很难看。方法1看起来很好而且清晰,但是我觉得将文件对象作为参数打开是否正确,在对象存储在JSON文件中后谁将控制该对象?
答案 0 :(得分:2)
我感到困惑的是,打开一个文件对象作为参数是否正确,谁将在对象存储在json文件中后控制该对象?
没有人控制;您在方法1的file
调用中创建的json.dump
会在该行之后留下范围,因此会隐式关闭。因此两种方法都是等价的。
如果您想要更详细,我建议您使用context manager:
with file('object.json', 'w') as f:
json.dump(object, f)
这可以确保在块结束时始终正确关闭文件,即使在发生错误时控制权传递给任何异常处理程序之前也是如此。
答案 1 :(得分:1)
我想说 没有太多区别,但从可读性的角度来看,第二种方法可以被认为更好; Readability counts.
在您的示例中,用于打开文件的文件名和模式是硬编码字符串。如果它们都是变量名(因为它们很可能是在现实世界中的例子),我觉得方法#1在阅读时会更难解析。
另一个观察是使用方法#1,你将无法继续写入该文件对象,因为你没有引用它的变量;您需要重新打开它才能追加更多数据。
答案 2 :(得分:1)
它们在内部是相同的,您可以检查源代码。