【问题标题】:List - use in a command列表 - 在命令中使用
【发布时间】:2018-08-16 18:35:25
【问题描述】:

我从设备得到输出,输出作为列表存储在下面的变量中

output = ['Gig 5/1', 'Gig 5/37', 'Gig 6/37', 'Gig 5/7', 'Gig 6/3', 'Gig 5/3']

再次,我需要通过从输出中选择索引来在同一设备上运行不同的命令。

command = 'show interface '+output[0]

如果我输入索引值,我会得到输出。对于某些设备,输出索引计数不断变化。需要在不提及确切索引的情况下执行命令,并且一旦执行所有索引就需要中断。最后,要么将结果存储在单个变量中,要么每次执行命令时都需要将结果存储在新变量中。

【问题讨论】:

    标签: python


    【解决方案1】:

    这是一个使用迭代和子流程来完成工作的代码示例:

    import subprocess
    
    output = ['Gig 5/1', 'Gig 5/37', 'Gig 6/37', 'Gig 5/7', 'Gig 6/3', 'Gig 5/3']
    
    for item in output:
        subprocess.call(('show', 'interface', item))
    

    这是假设这些是系统命令。如果不是,您将不得不将subprocess 替换为更合适的内容。


    另一种方法是使用字典而不是列表:

    output = {
      'Gig 5/1': None,
      'Gig 5/37': None, 
      'Gig 6/37': None, 
      'Gig 5/7': None, 
      'Gig 6/3': None, 
      'Gig 5/3': None,
      }
    
    for key in output:
      output[key] = do_something_with(key)
    

    输出会是这样的:

    {
      'Gig 5/1': "result for Gig 5/1",
      'Gig 5/37': "result for Gig 5/37",
    }
    

    或者你可以像这样访问它:

    for interface, value in output.items():
      print(interface, value)
    

    【讨论】:

    • 谢谢兄弟,那些是网络设备。我能够通过使用附加来完成它。所有输出都存储在一个变量中。是否可以在执行命令时将结果存储在不同的变量中?
    • @selvamsamymuthu,我在答案中附加了一种将其存储在字典中的方法。
    猜你喜欢
    • 2017-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-11
    • 1970-01-01
    • 2018-03-02
    • 2014-11-03
    相关资源
    最近更新 更多