我正在使用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()
答案 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)