用Python写入json文件[重复]

Posted

技术标签:

【中文标题】用Python写入json文件[重复]【英文标题】:Write in json file with Python [duplicate] 【发布时间】:2016-12-07 13:27:42 【问题描述】:

对于一个项目,我需要用 python 编写一个 json 文件,但我已经看到的所有内容 (json.dump) 与我想要做的不匹配......

我有一个结构,我只想在里面添加一些东西。 我想添加一个带有输入的服务,例如:


"Serial_011": "011",
"Servers_011":
    [
        
            "hostname": "srv-a.11",
            "ipv4_address": "0.0.0.0",
            "services":
                [
                    
                        "uri": "http://www.google.fr/1",
                        "expected_code": 200
                    ,
                    
                        "uri": "http://www.google.fr/2",
                        "expected_code": 200
                    
                ]
        ,
        
            "hostname": "nsc-srv-b.11",
            "ipv4_address": "0.0.0.0",
            "services":
                [
                    
                        "uri": "http://www.google.fr/3",
                        "expected_code": 200
                    ,
                    
                        "uri": "http://www.google.fr/4",
                        "expected_code": 200
                    
                ]
        
    ]

提前致谢

【问题讨论】:

将 JSON 读取到一个对象中,将您的信息添加到该对象并再次序列化它(如果需要,使用漂亮打印)。 我在哪里找到这个?感谢您的快速回答 google.com docs.python.org/2.7/library/json.html ? 如果你没有特殊的文件格式,那么添加一些东西的常用方法不仅仅是在最后加载它,修改它,然后写回整个东西。 (在大文件上,您尝试使用流式方法) 【参考方案1】:

当我在 python 中使用 JSON 对象时,我会记住 4 种方法。

json.dumps(<a python dict object>) - 给出由 python dict 对象形成的 json 字符串表示 json.dump( <a python dict object>,<file obj>) - 在文件对象中写入一个 json 文件 json.loads(<a string>) - 从字符串中读取一个 json 对象 json.load(<a json file>) - 从文件中读取一个 json 对象。

接下来要记住的重要一点是,python 中的jsondict 是等价的。

让我们说,文件内容位于文件addThis.json 中。 您在文件existing.json 中有一个已经存在的json 对象。

下面的代码应该可以完成这项工作

import json

existing = json.load(open("/tmp/existing.json","r"))
addThis = json.load(open("/tmp/addThis.json","r"))

for key in addThis.keys():
     existing[key] = addThis[key]

json.dump(exist,open("/tmp/combined.json","w"),indent=4)

编辑: 假设 addThis 的内容不在文件中,而是从控制台读取。

import json

existing = json.load(open("/tmp/existing.json","r"))

addThis = input()
# paste your json here.
# addThis is now simply a string of the json content of what you to add

addThis = json.loads(addThis) #converting a string to a json object.
# keep in mind we are using loads and not load

for key in addThis.keys():
     existing[key] = addThis[key]

json.dump(exist,open("/tmp/combined.json","w"),indent=4)

【讨论】:

所以在existing.json中我会放当前的json,在addThis.json中我用input()写我想要添加的内容,结果会是conbined.json? 为了澄清,内容(要添加的内容)是从 input() 中读取的? @M_S 我还添加了用于从input() 读取新 json 内容的代码。如果可行,请投票并确认答案。谢谢。 循环中... json.dump 中存在什么? 你能再清楚一点吗?

以上是关于用Python写入json文件[重复]的主要内容,如果未能解决你的问题,请参考以下文章

将可读格式的json.dumps写入Python3中的文件[重复]

Python 如何把json数据写入excel

Python JSON确保编码[重复]

将键添加到 json 文件,删除重复项并在 javascript 中写入 json 文件

打开JSON文件Python [重复]

python写入json文件