如何使用Python更新JSON文件?

时间:2014-07-04 19:21:53

标签: python json file storage updating

我正在使用Python,我有一个JSON文件,我想在其中更新与给定密钥相关的值。也就是说,我有my_file.json包含以下数据

{"a": "1", "b": "2", "c": "3"}

我想将b密钥的值从2更改为9,以便更新的文件如下所示:

{"a": "1", "b": "9", "c": "3"}

我该怎么做?


我尝试了以下但未成功(更改未保存到文件中):

with open('my_file.json', 'r+') as f:
    json_data = json.load(f)
    json_data['b'] = "9"
    f.close()

3 个答案:

答案 0 :(得分:9)

您根本没有保存更改的数据。您必须先加载,然后修改,然后才能保存。无法就地修改JSON文件。

with open('my_file.json', 'r') as f:
    json_data = json.load(f)
    json_data['b'] = "9"

with open('my_file.json', 'w') as f
    f.write(json.dumps(json_data))

你也可以这样做:

with open('my_file.json', 'r+') as f:
    json_data = json.load(f)
    json_data['b'] = "9"
    f.seek(0)
    f.write(json.dumps(json_data))
    f.truncate()

如果要使其安全,首先将新数据写入同一文件夹中的临时文件,然后将临时文件重命名为原始文件。这样,即使发生了某些事情,你也不会丢失任何数据。

如果您考虑到这一点,JSON数据很难就地更改,因为数据长度不固定,并且更改可能非常重要。

答案 1 :(得分:2)

你几乎就在那里,你只需要将更新的json_data写回文件。摆脱f.close(),因为with语句将确保文件已关闭。然后,发出

with open('my_file.json', 'w') as f:
    f.write(json.dumps(json_data))

答案 2 :(得分:1)

这是执行json文件更新/写入的最简单方法。 你在哪里创建json文件的实例为'f'并将'data'写入json文件,

#write json file

with open('data.json', 'w') as f:
    json.dump(data, f)

#Read json file

with open('data.json', 'r') as f:
    json.load(data, f)