2017-01-15 73 views
1

我嘗試添加以下一個新的節點example但:如何添加一個節點與ruamel.yaml

myitems = ruamel.yaml.load(inp, ruamel.yaml.RoundTripLoader) 
myitems['abc'].append('test') 

給我一個錯誤:

Traceback (most recent call last): 
    File "item_updater.py", line 148, in <module> 
    myitems['wohnung'].append('test') 
AttributeError: 'CommentedMap' object has no attribute 'append' 

我使用ruamel.yaml V0 .13.7

我在做什麼錯?

+0

您確定您使用的是0.8版本嗎? –

+0

版本0.8是什麼? – msinn

+0

我正在使用ruamel.yaml v0.13.7(這是最新版本) – msinn

回答

0

您的錯誤不是來自您指定的示例,如示例的inp中沒有wohnung顯示在您的錯誤中。

你可能忘了-地方:

wohnung: 
    a: 1 

代替:

wohnung: 
- a: 1 
只可以追加使用 myitems['wohnung'].append('test')後者

該示例有效,但未顯示真實的YAML輸入,很難看出錯誤的確切原因。

+0

好吧,閱讀這個例子,我不僅印象了數據['abc']。append('b')'''工作,但是'''data ['xyz']。append('b')'''也可以。 – msinn

+0

該YAML文件的頂層是一個映射。它的關鍵'abc'有一個值是一個序列。這將作爲-list列表的子類加載到Python中(第一個元素爲「a」)。頂層的關鍵「xyz」有一個值,它又是一個映射。這個被加載爲-'dict'的子類(帶有鍵/值對'('a',1)','('b',2)'等)。你可以追加到'list',但不是'dict' – Anthon

+0

好的,理解。感謝您的澄清。 - 一般來說,我在理解python中yaml實現的細節時遇到一些困難。 PyYAML和ruamel.yaml沒有廣泛記載。 – msinn

相關問題