Ich habe das folgende Problem beim Zuordnen von Dokumenten innerhalb einer YAML-Datei zu einem dict
und ordnungsgemäß zuordnen.Konvertieren von YAML-Datei in Python-Dict
Ich habe folgende YAML-Datei, die einen Server darstellt (db.yml
):
instanceId: i-aaaaaaaa
environment:us-east
serverId:someServer
awsHostname:ip-someip
serverName:somewebsite.com
ipAddr:192.168.0.1
roles:[webserver,php]
ich diese YAML-Datei laden, die ich ohne Probleme tun können, ich glaube, das verstehe ich.
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]
würde ich die Logik mag wie folgt arbeiten:
- Last yaml, Karte
- Blick in jedem dict in dem Dokument dict, wenn die
instanceId
übereinstimmt, die eingestellt wurde NachgetInstanceId()
, dann drucken Sie alle Schlüssel und Werte für das Dokument aus.
Wenn ich auf der Karte Datenstruktur von der Kommandozeile sehen, die ich erhalten:
{'instanceId': 'i-aaaaaaaa environment:us-east serverId:someServer awsHostname:ip-someip serverName:someserver ipAddr:192.168.0.1 roles:[webserver,php]'}
Ich glaube, ich könnte die Datenstruktur für die YAML-Datei nicht ordnungsgemäß erschaffen, und auf die Inhalte passend auf Die dict
, ich bin ein bisschen verloren.
Seitennotiz: Ich kann nicht alle Dokumente in dieser Datei laden mit yaml.load()
, versuchte ich yaml.load_all()
, die funktionieren scheint, aber mein Hauptproblem besteht immer noch.
Bitte benenne 'dict' in etwas anderes um. Das ist schlecht schlecht.Können Sie auch den Wert von 'yaml.load_all (stream) 'drucken, damit wir sehen können, was Sie tatsächlich haben? Zu guter Letzt scheint es nicht so, als hätten Sie ein gutes YAML-Beispiel hinzugefügt - wo sind mehrere Server definiert? – gahooa
Ich werde es umbenennen, danke für die beste Praxis. yaml_load_all (stream) zeigt:. Ich habe das zweite Dokument zur Fehlerbehebung entfernt. –
Welche Bibliothek/Modul wird im Code verwendet? Ich denke, es würde diese Frage verbessern, um die Import-Anweisung hinzuzufügen, so dass Leute, die diese Frage finden, nicht danach suchen und möglicherweise mehrere mögliche finden müssen. – Zelphir