Возникли проблемы с анализом файла Yaml с python - PullRequest
1 голос
/ 07 марта 2020

У меня есть раздел ниже в файле YML, и я пытаюсь прочитать IP-адрес и имя хоста серверов, чтобы убедиться, что у меня нет дублирования (можно увидеть каждый IP-адрес и каждое имя хоста)

У меня не получается на первом этапе при попытке подготовить IP-адрес. Будем рады получить помощь как в чтении, так и в проверке отсутствия дублирования

Спасибо

import yaml


with open(r'.\environment.yml') as file:
    environment = yaml.load(file, Loader=yaml.FullLoader)
print(environment ['server_details']['ip'])
YML-файл
server_details:
 - {ip: "{{ yum_repository.ip }}" , hostname: "{{ yum_repository.hostname }}"}
 - {ip: "{{ cloudera_managment_server.ip }}" , hostname: "{{ cloudera_managment_server.hostname }}"}
 - {ip: "{{ postgres_server.ip }}" , hostname: "{{ postgres_server.hostname }}"}
 - {ip: 10.201.51.30 , hostname: master1}
 - {ip: 10.201.51.31 , hostname: master2}
 - {ip: 10.201.51.32 , hostname: master3}
 - {ip: 10.201.51.36 , hostname: worker1}
 - {ip: 10.201.51.37 , hostname: worker2}
 - {ip: 10.201.51.38 , hostname: worker3}
 - {ip: 10.201.51.39 , hostname: kafka1}
 - {ip: 10.201.51.40 , hostname: kafka2}
 - {ip: 10.201.51.41 , hostname: kafka3}
 - {ip: 10.201.51.44 , hostname: gw1}

1 Ответ

1 голос
/ 07 марта 2020

Как уже упоминалось в @AdamSmith, вы должны сначала пройти (или индексировать) список.

import yaml


with open(r'.\environment.yml') as file:
    environment = yaml.load(file, Loader=yaml.FullLoader)
for server_detail in environment['server_details']:
    print(server_detail['ip'])

Вы также можете составить список

ip_list = [server_detail['ip'] for server_detail in environment['server_details']]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...