如何使用Python更新JSON文件?

use*_*052 6 python storage json updating file

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

{"a": "1", "b": "2", "c": "3"}
Run Code Online (Sandbox Code Playgroud)

我想只更改与b键相关的值2,9以便更新的文件看起来像:

{"a": "1", "b": "9", "c": "3"}
Run Code Online (Sandbox Code Playgroud)

我该怎么做?


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

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

DrV*_*DrV 10

您根本没有保存更改的数据.您必须先加载,然后修改,然后才能保存.无法就地修改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))
Run Code Online (Sandbox Code Playgroud)

你也可以这样做:

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()
Run Code Online (Sandbox Code Playgroud)

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

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