У меня возникает следующая проблема: сопоставление документов в файле YAML с dict
и их правильное отображение.
У меня есть следующий файл YAML, который представляет собой сервер (db.yml
):
instanceId: i-aaaaaaaa
environment:us-east
serverId:someServer
awsHostname:ip-someip
serverName:somewebsite.com
ipAddr:192.168.0.1
roles:[webserver,php]
Я загружаю этот файл YAML, который я могу сделать без каких-либо проблем. Думаю, я это понимаю.
instanceId = getInstanceId()
stream = file('db.yml', 'r')
dict = yaml.load_all(stream)
for key in dict:
if key in dict == "instanceId":
print key, dict[key]
Я бы хотел, чтобы логика работала следующим образом:
- загрузить yaml, map to dict
- посмотрите в каждом dict в документе, если
instanceId
соответствует тому, что было установленоgetInstanceId()
, затем распечатайте все ключи и значения для этого документа.
Если я посмотрю на структуру данных карты из командной строки, я получаю:
{'instanceId': 'i-aaaaaaaa environment:us-east serverId:someServer awsHostname:ip-someip serverName:someserver ipAddr:192.168.0.1 roles:[webserver,php]'}
Я думаю, что я мог бы неправильно создать структуру данных для файла YAML, а при совпадении содержимого с dict
я немного потерял.
Боковое примечание: я не могу загрузить все документы в этом файле с помощью yaml.load()
, я пробовал yaml.load_all()
, который, похоже, работает, но моя основная проблема все еще существует.