2017-06-16 5 views
0

Ich habe eine Beispiel-YAML-Datei und ich kann es nicht mit PyYAML-Bibliothek analysieren.Nicht möglich, YAML-Datei python zu analysieren

setup.yml:

key: HostName 
deviceid: port1 

Python-Code

with open('../configs/setup.yml') as stream: 
    try: 
     print 'yaml.data ==', yaml.load(stream) 
     print 'yaml.data ==', type(yaml.load(stream)) 
     # print 'yaml.data ==', dict(yaml.load(stream)) 
     data = yaml.safe_load(stream) 
     self.device_id = data['deviceid'] 
     self.key = yaml.load(stream)['key'] 
    except yaml.YAMLError as exc: 
     print(exc) 

Der yaml.load(stream) Typ Nonetype ist, dachte ich, es ein Wörterbuch sein sollte.

Antwort

0

Nach Lesen Sie den Strom mit dem ersten load() es keine weiteren Daten in dem Strom ist und die nächste Last kehrt None und keinen Fehler werfen (zB Ende des Streams) ..

Was Sie tun können ist:

oder speichern Sie einfach das geladene Dokument in Daten von Anfang an. Ich habe den Verweis auf self. wegen der vorherigen Fehler entfernt, Sie sind nie zu dieser undefinierten Variable gekommen.

Allerdings gibt es so gut wie nie ein Bedürfnis PyYAML zu gebrauchen load() (und das ist sicherlich richtig hier) es ist unsicher und Sie nicht über die warnen. Mit unkontrollierten Daten kann es Ihre Scheibe abwischen, oder noch schlimmer.

Verwandte Themen