【问题标题】:How to Get all Ip and Mac address from the yml file in python?如何从python中的yml文件中获取所有IP和Mac地址?
【发布时间】:2021-08-18 14:40:24
【问题描述】:
EthernetClient:
     Windows:    
        ip: 192.168.1.152
        mac_adr: ‘X4:81:C7:BD:46:04'

     Windows_Extnd:    
        ip: 192.168.1.151
        mac_adr: 'X4:81:C7:BD:47:04'
        
WifiClient:
    Windows:    
        ip: 192.168.1.154
        mac_adr: 'X4:81:C7:BD:47:05’
    MAC:    
        ip: 192.168.1.3
        mac_adr: 'X4:81:C7:BD:47:06’
        
    IOS:    
        ip: 192.168.1.4
        mac_adr: 'X4:81:C7:BD:47:07’

这是 Yml 文件。我需要从中获取所有密钥的 ip 和 mac_adr。 我伸手去获取所有数据

import yaml
a_yaml_file = open("../Test/example.yml")
parsed_yaml_file = yaml.load(a_yaml_file, Loader=yaml.FullLoader)

print(parsed_yaml_file["EthernetClient"])
print(parsed_yaml_file.get("WifiClient"))

【问题讨论】:

    标签: python automated-tests yaml


    【解决方案1】:

    你有一些问题.yml文件

    • 最后一行有空格mac_adr: 'X4:81:C7:BD:47:07’
    • 您以 ' 开头,但以 ` 结尾

    test.yml

    EthernetClient:
      Windows:    
        ip: 192.168.1.152
        mac_adr: ‘X4:81:C7:BD:46:04'
      Windows_Extnd:    
        ip: 192.168.1.151
        mac_adr: 'X4:81:C7:BD:47:04'
    
    WifiClient:
      Windows:    
          ip: 192.168.1.154
          mac_adr: 'X4:81:C7:BD:47:05'
      MAC:
          ip: 192.168.1.3
          mac_adr: 'X4:81:C7:BD:47:06'
      IOS:    
          ip: 192.168.1.4
          mac_adr: 'X4:81:C7:BD:47:07'
    

    ExecutionScript.py

    import yaml
    
    with open("test.yml", 'r') as f:
        valuesYaml = yaml.load(f, Loader=yaml.FullLoader)
        print(valuesYaml["EthernetClient"])
        print(valuesYaml.get("WifiClient"))
    

    最后,这是你获得价值的方式


    根据要求,以下是获取完整 IP 列表的方法

    import yaml
    
    with open("test.yml", 'r') as f:
        listOfIp = []
        valuesYaml = yaml.load(f, Loader=yaml.FullLoader)
        
        for clientType, clientValues in valuesYaml.items():
            for attr, value in clientValues.items():
                if 'ip' in value:
                    listOfIp.append(value['ip'])
    
    print(listOfIp) # ['192.168.1.152', '192.168.1.151', '192.168.1.154', '192.168.1.3', '192.168.1.4']
    

    【讨论】:

    • 感谢您的回复。请建议使用 for 循环仅获取 ip 和 mac_adr 进行打印。它有助于我在 UI 中验证 ip 和 macaddress
    • @MahendraVengalam 按要求更新了帖子,如果这对您有帮助,请告诉我:)
    • 谢谢这对我很有用并且工作正常。非常感谢。
    • @MahendraVengalam 请不要忘记在绿色的勾上打勾以接受我的回答,快乐编码!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-31
    • 2016-11-06
    • 1970-01-01
    • 1970-01-01
    • 2013-02-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多