在python中将嵌套的FOR循环输出存储在2D数组中

时间:2014-02-06 12:05:13

标签: python arrays list paramiko

我使用paramiko登录设备列表,然后在每个设备上运行命令列表,然后捕获输出。 python脚本如下:

import paramiko

f1 = open('hostfile','r')
f2 = open('commandfile','r')

devices = f1.readlines()
commands = f2.readlines()


for device in devices:
    for command in commands:
        ssh = paramiko.SSHClient()
        ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
        ssh.connect(device, username="admin", password="test")
        stdin, stdout, stderr = ssh.exec_command(command)
        output= stdout.read()

f1.close()
f2.close()

我想要实现的是将整个输出存储在二维数组中,如下所示:

data = [
('device1', 'output1 for device1', 'output2 for device1', 'output3 for device1'),
('device2', 'output1 for device2', 'output2 for device2', 'output3 for device2'),
('device3', 'output1 for device3', 'output2 for device3', 'output3 for device3')
   ..................
   .................
]

我需要使用xlwt将此输出传递给excel表,因此我需要以这种格式存储输出..

1 个答案:

答案 0 :(得分:2)

这是你想要的吗?

data = []
for device in devices:
    data.append([device])
    for command in commands:
        ssh = paramiko.SSHClient()
        ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
        ssh.connect(device, username="admin", password="test")
        stdin, stdout, stderr = ssh.exec_command(command)
        output= stdout.read()
        data[-1].append(output)
    data[-1] = tuple(data[-1])

一些解释:

  

实际做什么数据[-1]和元组(数据[-1])

请注意,data应该是元组列表。

  1. data[-1]指的是列表data中的最后一项。

  2. data[-1]构建为内循环中的列表。由于data的指定输出结构是元组列表,因此代码使用函数tuple()来获取从列表data[-1]转换的元组。