2016-11-29 44 views
0

我無法理解使用python進行yaml解析的特殊行爲。 我YAML文件Yaml行爲 - 用python解析

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

代碼

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 

YAML的是有類似值的相當大的。這個問題是在輸出,

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

不知何故,它認爲我的「容器名稱」值是一個元組,我不能這樣傳遞給ECS博託,因爲它預計字符串,而不是元組。想知道爲什麼會發生這種情況以及如何糾正。

我從safeload切換到yaml加載,但似乎沒有任何效果。請輸入任何內容。

回答

5

在這條線的逗號導致它被作爲一個元組處理:

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

解決辦法是刪除尾隨逗號。

+0

砰!在目標上......這完全是出乎意料的。萬分感謝 –