更新/添加Json文件键值对而不更新文件

时间:2017-03-22 14:38:07

标签: python json

 {
                "app": {
                    "Garden": {
                        "Flowers": {
                            "Red flower": "Rose",
                            "White Flower": "Jasmine",
                            "Yellow Flower": "Marigold"
                        }
                    },
                    "Fruits": {
                        "Yellow fruit": "Mango",
                        "Green fruit": "Guava",
                        "White Flower": "groovy"
                    },
                    "Trees": {
                        "label": {
                            "Yellow fruit": "Pumpkin",
                            "White Flower": "Bogan"
                        }
                    }
                }

我有一个带有JSON内容的文件,如上所示,我想在此文件中添加/覆盖键值对,而不触及文件中的现有行。原因是当我将文件上传到git时,它显示整个文件已被更改,而不仅仅是更新的键值对。我的问题是,当我打开文件并写入文件时,整个文件都会更新。

比如说我想更新:

json[app][Garden][Flowers][Red Flower] = 'Shoe Flower'

只应在Json文件中更新上面的Key-Value对,而不应重写整个文件。

这不起作用:

with open("/Users/vbabu/Documents/sk-SK.json",'a/w') as json_data:
    json.dump(pte,json_data,ensure_ascii=False,indent=4, sort_keys=True)

提前致谢

1 个答案:

答案 0 :(得分:0)

我认为你对修改文件有错误的概念。

更新一行意味着您创建了一个新文件并替换旧文件。

Git显示整个文件更改可能是因为行缩进。

您设置json.dump indent=4,您的文件可能与格式化的json不匹配。

如果您不想格式化文件,则应尝试使用字符串操作并编写内容而不是json.dump。