在我的代码中有两个循环,一个主要是for循环,它将从ip地址列表中读取一些ip地址,第二个循环是我向这些ip发送一些命令并获得一些输出(必需)的地方,我正在发送两个命令并从这些命令中获取两个输出。首先,我使用split(,)方法将这些输出分离,并使用append方法将其附加到列表中。我获得的输出接近我的期望输出,但未获得确切或预期的输出。帮助我获得该输出。
这里我正在使用与Python列表相关的方法来获取输出。
cli_commands = ['sh version | i p n|Cisco IOS','sh inventory']
for k in range(len(cli_commands)):
net_connect.send_command(cli_commands[k])
vall=net_connect.send_command(cli_commands[k])
#myList2.extend(vall.strip().split(","))
#myList2.append(vall.split(","))
myList2.append(vall.strip().split(","))
实际结果:
[['Cisco IOS Software', ' C2960S Software (C2960S-UNIVERSALK9-M)', ' Version 15.0(2)SE11', ' RELEASE SOFTWARE (fc3)'], ['NAME: "1"', ' DESCR: "WS-C2960S-24TS-L"\nPID: WS-C2960S-24TS-L ', ' VID: V02 ', ' SN: FOC1452X5C5'], ['Cisco IOS Software', ' C2960S Software (C2960S-UNIVERSALK9-M)', ' Version 15.0(2)SE11', ' RELEASE SOFTWARE (fc3)'], ['NAME: "1"', ' DESCR: "WS-C2960S-48TS-L"\nPID: WS-C2960S-48TS-L ', ' VID: V02 ', ' SN: FOC1502Z4G1']]
此处外部循环将获取ip地址,并进入内部forloop,在此它将逐个执行两个命令,以及['Cisco IOS Software','C2960S Software(C2960S-UNIVERSALK9-M)','15.0(2)版SE11',“ RELEASE SOFTWARE(fc3)']将来自第一个命令,并且
['NAME: "1"', ' DESCR: "WS-C2960S-24TS-L"\nPID: WS-C2960S-24TS-L ', ' VID: V02 ', ' SN: FOC1452X5C5']
将来自循环中的其他命令。
期望:
[['Cisco IOS Software', ' C2960S Software (C2960S-UNIVERSALK9-M)', ' Version 15.0(2)SE11', ' RELEASE SOFTWARE (fc3)','NAME: "1"', ' DESCR: "WS-C2960S-24TS-L"\nPID: WS-C2960S-24TS-L ', ' VID: V02 ', ' SN: FOC1452X5C5'], ['Cisco IOS Software', ' C2960S Software (C2960S-UNIVERSALK9-M)', ' Version 15.0(2)SE11', ' RELEASE SOFTWARE (fc3)','NAME: "1"', ' DESCR: "WS-C2960S-48TS-L"\nPID: WS-C2960S-48TS-L ', ' VID: V02 ', ' SN: FOC1502Z4G1']]
答案 0 :(得分:2)
尝试以下作为最后一行:
print([myList2[i] + myList2[i + 1] for i in range(0, len(myList2), 2)])
输出:
[['Cisco IOS Software', ' C2960S Software (C2960S-UNIVERSALK9-M)', ' Version 15.0(2)SE11', ' RELEASE SOFTWARE (fc3)','NAME: "1"', ' DESCR: "WS-C2960S-24TS-L"\nPID: WS-C2960S-24TS-L ', ' VID: V02 ', ' SN: FOC1452X5C5'], ['Cisco IOS Software', ' C2960S Software (C2960S-UNIVERSALK9-M)', ' Version 15.0(2)SE11', ' RELEASE SOFTWARE (fc3)','NAME: "1"', ' DESCR: "WS-C2960S-48TS-L"\nPID: WS-C2960S-48TS-L ', ' VID: V02 ', ' SN: FOC1502Z4G1']]
答案 1 :(得分:1)
你可以做
[x + y for x, y in zip(myList2[0::2], myList2[1::2])]
以您给出的示例为例:
In [15]: myList2 = [['Cisco IOS Software', ' C2960S Software (C2960S-UNIVERSALK9-M)', ' Version 15.0(2)SE11', ' RELEASE
...: SOFTWARE (fc3)'], ['NAME: "1"', ' DESCR: "WS-C2960S-24TS-L"\nPID: WS-C2960S-24TS-L ', ' VID: V02 ', ' SN: FOC
...: 1452X5C5'], ['Cisco IOS Software', ' C2960S Software (C2960S-UNIVERSALK9-M)', ' Version 15.0(2)SE11', ' RELEASE
...: SOFTWARE (fc3)'], ['NAME: "1"', ' DESCR: "WS-C2960S-48TS-L"\nPID: WS-C2960S-48TS-L ', ' VID: V02 ', ' SN: FO
...: C1502Z4G1']]
In [16]: [x + y for x, y in zip(myList2[0::2], myList2[1::2])]
Out[16]:
[['Cisco IOS Software',
' C2960S Software (C2960S-UNIVERSALK9-M)',
' Version 15.0(2)SE11',
' RELEASE SOFTWARE (fc3)',
'NAME: "1"',
' DESCR: "WS-C2960S-24TS-L"\nPID: WS-C2960S-24TS-L ',
' VID: V02 ',
' SN: FOC1452X5C5'],
['Cisco IOS Software',
' C2960S Software (C2960S-UNIVERSALK9-M)',
' Version 15.0(2)SE11',
' RELEASE SOFTWARE (fc3)',
'NAME: "1"',
' DESCR: "WS-C2960S-48TS-L"\nPID: WS-C2960S-48TS-L ',
' VID: V02 ',
' SN: FOC1502Z4G1']]