У меня есть файл YAML, который нужно разобрать на Python; это остов инвентарного файла Ansible, который может меняться ежедневно; Я пишу синтаксический анализатор, который будет создавать этот файл инвентаризации.
Допустим, у меня есть этот файл yaml:
---
all:
server1: ipaddr1
server2: ipaddr2
server3: ipaddr3
dbservers:
server2
server3
webgwservers:
server1
У меня есть следующий фрагмент кода для загрузки YAML:
environment = yaml.load(bom, Loader=yaml.SafeLoader)
for x in environment.keys():
key = environment[x]
if type(key) is list:
print(x+ ":")
if x == 'all':
for xx in environment['all']:
for k,v in xx.items():
print(k+":"+v)
if x == 'infra':
Теперь я хочу иметь возможность перечислить все ключи верхнего уровня ('all', 'dbservers', 'webgwservers') и в соответствии с их типом (списки, dicts, et c) сделать что-то. Дело в том, что у меня могли быть данные для yaml - больше ключей верхнего уровня.
Таким образом, мне нужен способ проанализировать ключи верхнего уровня и получить их имена без жесткого кодирования этих имен ключей.