Я работаю над проектом по анализу Yaml-файла AWS Cloudformation для извлечения всего! ImportValue из шаблона YAML.
Я пытаюсь использовать ruamel.yaml для анализа того (что я новичок), я смог прочитать файл YAML и получить отдельные элементы.
import ruamel.yaml
def general_constructor(loader, tag_suffix, node):
return node.value
ruamel.yaml.SafeLoader.add_multi_constructor(u'!', general_constructor)
with open(cfFile, 'r') as service:
stream = service.read()
yaml_data = ruamel.yaml.safe_load(stream)
print yaml_data
Выше кода получает содержимое указанного файла YAML, и результат выглядит следующим образом.
{'Application': {'Properties': {'ApplicationName': [ScalarNode(tag=u'tag:yaml.org,2002:str', value=u'-'),
SequenceNode(tag=u'tag:yaml.org,2002:seq', value=[ScalarNode(tag=u'tag:yaml.org,2002:str', value=u'***'), ScalarNode(tag=u'!ImportValue', value=u'jkl')])],
*
*
ScalarNode(tag=u'!ImportValue', value=u'def'),
*
*
ScalarNode(tag=u'!ImportValue', value=u'rst')])]},
Итак, в ScalarNode есть куча! ImportValue (например, ScalarNode (tag = u '! ImportValue', value = u'rst ')), я действительно хочу извлечь это. Теперь эти ImportValues разбросаны по шаблону в разных местах. Что было бы лучшим способом извлечь ценность из тех? В нашей облачной информации у нас есть куча YAML-файлов, некоторые из них экспортируют определенный ресурс, а другие YAML-файлы импортируют их. Итак, я хочу построить своего рода карту зависимостей (может быть, JSON-файл), которая будет отображать взаимозависимость между файлами формирования облаков.