Python中文
首页
教程
问答
标签
搜索
登录
注册
使用Python将多个JSON对象作为一个对象写入单个文件
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我使用python访问foreman API来收集foreman所知道的所有主机的一些事实。不幸的是,v1 foreman API中没有<em>get all hosts facts</em>(或类似的东西),所以我必须遍历所有主机并获取信息。这样做让我遇到了一个麻烦。对给定主机的每次调用都会返回一个JSON对象,如下所示:</p> <pre><code>{ "host1.com": { "apt_update_last_success": "1452187711", "architecture": "amd64", "augeasversion": "1.2.0", "bios_release_date": "06/03/2015", "bios_vendor": "Dell Inc." } } </code></pre> <p>这很好,当我附加下一个主机的信息时,问题就出现了。然后我得到一个json文件,它看起来像这样:</p> ^{pr2}$ <p>下面是执行此操作的代码:</p> <pre><code>for i in hosts_data: log.info("Gathering host facts for host: {}".format(i['host']['name'])) try: facts = requests.get(foreman_host+api+"hosts/{}/facts".format(i['host']['id']), auth=(username, password)) if hosts.status_code != 200: log.error("Unable to connect to Foreman! Got retcode '{}' and error message '{}'" .format(hosts.status_code, hosts.text)) sys.exit(1) except requests.exceptions.RequestException as e: log.error(e) facts_data = json.loads(facts.text) log.debug(facts_data) with open(results_file, 'a') as f: f.write(json.dumps(facts_data, sort_keys=True, indent=4)) </code></pre> <p>我需要文件的格式如下:</p> <pre><code>{ "host1.com": { "apt_update_last_success": "1452187711", "architecture": "amd64", "augeasversion": "1.2.0", "bios_release_date": "06/03/2015", "bios_vendor": "Dell Inc." }, "host2.com": { "apt_update_last_success": "1452703454", "architecture": "amd64", "augeasversion": "1.2.0", "bios_release_date": "06/03/2015", "bios_vendor": "Dell Inc." } } </code></pre>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>不要在循环中写入json,而是将数据插入具有正确结构的<code>dict</code>。然后在循环结束时将dict写入json。在</p> <p>这假设您的数据集适合内存。在</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
如何添加虚拟方法
9 回答
如何添加表示整数的擦边字符串?
6 回答
如何添加要在Bokeh中使用的新font.ttf文件?
4 回答
如何添加要显示的矩阵XY轴编号和XY轴
2 回答
如何添加计数?
8 回答
如何添加计数器函数?
3 回答
如何添加计数器列来计算数据帧中另一列中的特定值?
9 回答
如何添加计数器来跟踪while循环中的月份和年份?
5 回答
如何添加计数并删除countplot的顶部和右侧脊椎?
1 回答
如何添加计时器wx.应用程序更新窗口对象的主循环?
8 回答
如何添加评论到帖子?PostDetailVew,Django 2.1.5
7 回答
如何添加评论拉梅尔亚姆
1 回答
如何添加诸如矩阵Python/Pandas之类的数据帧?
5 回答
如何添加谷歌地点自动完成到Flask?
4 回答
如何添加超时、python discord bot
7 回答
如何添加超过1dp的检查
5 回答
如何添加距离方法
10 回答
如何添加跟随游戏的敌人精灵
3 回答
如何添加路径以便python可以找到程序?
4 回答
如何添加身份验证/安全性以使用happybase访问HBase?
5 回答