2016-11-29 2 views
0

Ich bin nicht in der Lage, ein eigenartiges Verhalten der YAML-Parsing mit Python zu verstehen. Meine Yaml DateiYaml Verhalten - Parsing mit Python

- mappings: 
     xyz: 
     family: app 
     image: mine-2-455-1 
     containerName: image-1 
     containerPort: 9020 
     appenv: dev 
     label: cds-containers 
     count: 2 

-Code

config = open(confFile) 
    confParser = yaml.load(config) 
    taskFamily = str(confParser[2]['mappings']['xyz']['family']) 
    print taskFamily 
    imageName = str(confParser[2]['mappings']['xyz']['image']) 
    print imageName 
    containerName = str(confParser[2]['mappings']['xyz']['containerName']), 
    print containerName 

Die yaml ist ziemlich groß mit ähnlichen Werten. Das Problem kommt in der Ausgabe,

xyz 
mine-2-455-1 
('image-1',) 

Irgendwie es hält meinen ‚Container‘ Wert einen Tupels zu sein und ich bin nicht in der Lage diese Boto zu ecs passieren, da es Strings und nicht Tupel erwartet. Ich frage mich, warum das passiert und wie man es korrigiert.

Ich wechselte von Safeload zu laden für Yaml, aber das scheint keine Wirkung zu haben. Irgendwelche Eingaben bitte.

Antwort

5

Das Komma auf dieser Linie verursacht es als Tupel behandelt werden:

ist
containerName = str(confParser[2]['mappings']['xyz']['containerName']), 

Das Update das folgende Komma zu entfernen.

+0

bang! auf Ziel .. das war völlig unerwartet. Danke vielmals –