怎样读取json文件python_如何从python脚本读取json文件中的列表

在问题:1

感谢有人能给我进一步的建议。我想使用python脚本和netmiko模块通过ssh连接到我的设备。我通过api请求获取ssh详细信息(json文件),并使用这些数据来运行脚本。但是我在下面得到了错误。我希望有人能给我指点迷津。在

我错过了一些东西,但我不知道怎么解决它。拜托纠正并引导我。谢谢。在

json文件创建为下面的片段response = requests.post(url,data=data,headers=headers,verify=False)

dictionary_info = response.json()

with open('devices.json', 'w') as fp:

json.dump(dictionary_info, fp, indent=4, sort_keys=True)

在设备.json归档如下:

^{pr2}$

当我运行下面的脚本(snippet)时,它将返回下面的错误File "devices.py", line 18, in

print('Connecting to device:',device['ip'])

TypeError: string indices must be integers

for device in devices:

try:

print('~' * 79)

print('Connecting to device:',device['ip'])

connection = netmiko.ConnectHandler(**device)

print(connection.send_command('show interface'))

connection.disconnect()

except netmiko_exceptions as e:

print('Failed to ', device['ip'], e)

我应该能够根据json文件提供的ssh详细信息对每个设备运行脚本和ssh。不知怎么回事,代码需要进一步修改,只是我不知道怎么修改。请帮帮我。谢谢

我编辑的内容设备.json…我删除了花括号{},对象名'device'和'status',只保留列表[],如下所示[

{

"username": "scnpa",

"ip": "10.10.10.1",

"password": "123",

"device_type": "cisco_ios"

},

{

"username": "scnpa",

"ip": "10.10.10.2",

"password": "123",

"device_type": "cisco_ios"

},

{

"username": "scnpa",

"ip": "10.10.10.3",

"password": "123",

"device_type": "cisco_ios"

},

{

"username": "scnpa",

"ip": "10.10.10.4",

"password": "123",

"device_type": "cisco_ios"

}

]

今天,我只需尝试nerror…然后运行脚本,它就可以工作了..使用上面的可编辑json文件。。。我知道这不是最终的解决方案,我会得到我之前共享的json文件(用花括号{}等),或者有没有办法,我可以得到上面的格式[{},{},{},{}]?从JSONAPI响应创建文件,只获取{{},{}.{},{}]内容。。。?在

或者保持原样。。。在

可能需要在for循环部分修改python脚本。我试着移除设备,却得到了不同的错误。。将“device”更改为其他名称,并仍然给出错误“TypeError:string index must be integers”。

不知道。。。在for device in devices:

try:

print('~' * 79)

print('Connecting to device:',device['ip'])

connection = netmiko.ConnectHandler(**device)

print(connection.send_command('show interface'))

connection.disconnect()

问题:2 I创建单独的帖子

关于从API读取响应json文件(string)查询,我还有另外一个问题。例如,json响应如下{

"status": "SUCCESS",

"device": [

{

"model":"XXXX-A",

"username": "scnpa1",

"ip": "10.10.10.1",

"password": "123",

"device_type": "cisco_ios"

},

{

"model":"XXXX-A",

"username": "scnpa2",

"ip": "10.10.10.2",

"password": "456",

"device_type": "cisco_ios"

}

]

}

如何确保只有特定的键/值,如名称和密码,并且能够将文件打印并创建为json文件(列表),该文件可以作为python脚本的输入读取。希望它会像下面这样{

"status": "SUCCESS",

"device": [

{

"username": "scnpa1",

"ip": "10.10.10.1",

"password": "123"

},

{

"username": "scnpa2",

"ip": "10.10.10.2",

"password": "456"

}

]

}

但是我将使用下面的json参数来创建它response = requests.post(url,data=data,headers=headers,verify=False)

dictionary_info = response.json()

with open('devices.json', 'w') as fp:

json.dump(dictionary_info, fp, indent=4, sort_keys=True)

请告诉我。谢谢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值