我对json.dump()有一些意想不到的行为。我正在创建一个文件results
(空),然后在如下代码中使用它:
with open(results, 'r+') as fp:
temp = {}
try:
# file not empty, load existing dict, and add a key value to it
temp = json.load(fp)
temp[key] = value
except json.decoder.JSONDecodeError:
# file is empty, create a new dict
temp[key] = value
# write the dictionary back into file
json.dump(temp, fp)
如果上面的引用执行一次,它就可以正常工作。但是,如果我执行两次,我希望有一个具有两个键的字典:{key1: value1, key2: value2}
,但是我得到的是两个字典:{key1: value1}{key2: value2}
。这种行为的原因可能是什么?
在运行代码之前和之后查看输出文件,您应该了解发生了什么。
就在
json.dump
之前,file对象指向文件的末尾。然后从这个位置转储数据。如果您尝试先倒带文件,它应该从一开始就覆盖数据:
但是,如果第一个对象写入的数据少于文件中已有的数据,则这可能会使悬挂数据超出第一个对象。因此,我建议您重新构造代码,以便在两次操作中读取和写入文件,在写入时擦除文件。例如:
相关问题 更多 >
编程相关推荐