【发布时间】:2018-08-23 10:56:10
【问题描述】:
我是 python 新手,正在寻求帮助,我有一个 json 文件 (input.json),我计划将其用作我的 python(版本 2.7.8)脚本的输入文件。
{
"esxIP": "xx.xx.xx.xx",
"esxUser": "username",
"esxPass": "password",
"vm": {
"vm1": [
{
"ip": "xx.xx.xx.xx",
"user": "username",
"pass": "password"
},
{
"device": "naa.axxxxxx1",
"vmfsType": "vmfs5",
"diskType": "thin"
},
{
"device": "naa.axxxxxx2",
"vmfsType": "vmfs6",
"diskType": "thick"
}
],
"vm2": [
{
"ip": "xx.xx.xx.xx",
"user": "username",
"pass": "password"
},
{
"device": "naa.bxxxxxx1",
"vmfsType": "vmfs5",
"diskType": "thin"
},
{
"device": "naa.bxxxxxx2",
"vmfsType": "vmfs6",
"diskType": "thick"
}
],
"vm3": [
{
"ip": "xx.xx.xx.xx",
"user": "username",
"pass": "password"
},
{
"device": "naa.cxxxxxx1",
"vmfsType": "vmfs5",
"diskType": "thin"
},
{
"device": "naa.cxxxxxx2",
"vmfsType": "vmfs6",
"diskType": "thick"
}
]
}
}
使用下面的 python 代码,当我知道某个键时,我可以获取该键的值。例如
import json
with open('input.json') as f:
jInput = json.load(f)
print jInput["vm"]["vm1"][1]["vmfsType"]
这里我在最后一个打印语句中将 VM 名称提供为“vm1”,它正在为第一个设备打印 vmfsType 值:
vmfs5
所以这是我的查询:
-
在我的情况下,我无法硬编码 VM 名称,例如vm1、vm2 等,因为它不是静态的。每次都可以更改此输入,甚至有时可能有 2 个 vm,有时可能有 4 个 vm。因此,在代码中,我如何才能一一获取 VM 名称并使用它的关联键运行特定命令,例如
“vm1”:[ { "ip": "xx.xx.xx.xx", “用户”:“用户名”, “通过”:“密码” }, { “设备”:“naa.axxxxxx1”, "vmfsType": "vmfs5", “磁盘类型”:“薄” }, { “设备”:“naa.axxxxxx2”, "vmfsType": "vmfs6", “磁盘类型”:“厚” } ],
同样的方式,它们将为每个 VM 提供多个设备,但具有相同的键名,我们如何将它们一一获取并使用它为特定 VM 运行命令。
感谢您的帮助。
谢谢。
【问题讨论】:
标签: python json python-2.7