#python #automated-tests #yaml
Вопрос:
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"))
Ответ №1:
С вашим файлом возникли некоторые проблемы .yml
- В вашей последней строке есть интервал
mac_adr: 'X4:81:C7:BD:47:07’
- Вы начали с
'
, но закончили с `
тест.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']
Комментарии:
1. Спасибо за ответ. Пожалуйста, предложите использовать только ip и mac_adr для печати с помощью цикла for. Это помогает мне проверить ip-адрес и mac-адрес в пользовательском интерфейсе
2. @MahendraVengalam Обновил сообщение в соответствии с просьбой, дайте мне знать, если это вам поможет 🙂
3. Спасибо, это было полезно для меня и работало нормально. Большое спасибо.
4. @MahendraVengalam Пожалуйста, не забудьте поставить зеленую галочку, чтобы принять мой ответ, счастливого кодирования!