Python 如何使用ruamel.yaml添加节点
我尝试在以下位置添加新节点,但: 给我一个错误:Python 如何使用ruamel.yaml添加节点,python,pyyaml,ruamel.yaml,Python,Pyyaml,Ruamel.yaml,我尝试在以下位置添加新节点,但: 给我一个错误: Traceback (most recent call last): File "item_updater.py", line 148, in <module> myitems['wohnung'].append('test') AttributeError: 'CommentedMap' object has no attribute 'append' 回溯(最近一次呼叫最后一次): 文件“item_updater.p
Traceback (most recent call last):
File "item_updater.py", line 148, in <module>
myitems['wohnung'].append('test')
AttributeError: 'CommentedMap' object has no attribute 'append'
回溯(最近一次呼叫最后一次):
文件“item_updater.py”,第148行,在
myitems['wohnung'].append('test')
AttributeError:“CommentedMap”对象没有属性“append”
我使用的是ruamel.yaml v0.13.7
我做错了什么?您的错误不是来自您所指出的示例,因为在示例的
inp
中,您的错误中没有显示任何wohnung
您可能忘记了某个地方的-
:
wohnung:
a: 1
而不是:
wohnung:
- a: 1
只有在后者上,您才能使用myitems['wohnung']进行追加。追加('test')
这个例子是有效的,但是如果没有显示您的真实YAML输入,就很难看出您的错误的确切原因。您确定使用0.8版吗?什么的0.8版?我使用的是ruamel.YAML v0.13.7(这是最新版本)好的,阅读这个例子时,我的印象不仅是
数据['abc']。append('b')
,但是data['xyz'].append('b')
也可以。YAML文件的顶层是一个映射。它的键“abc”具有一个序列值。它作为-list
的一个子类加载到Python中(第一个元素是'a'
)。toplevel的键xyz
的值也是一个映射。它作为-dict
的a-子类加载(带有键/值对('a',1)
,('b',2)
,等等)。您可以附加到列表中,但不能附加到dict
中,明白了。谢谢你的澄清一般来说,我在理解python中yaml实现的细节时会遇到一些困难。Pyaml和ruamel.yaml没有被广泛地记录。@msinn编写了ruamel.yaml的文档。你是对的,这通常是事后才想到的,如果有任何想法的话。请随时在这里询问澄清,但请确保您包括您的确切输入(最小化)。这就是为什么我“抱怨”不清楚“wohnung
”来自哪里。
wohnung:
- a: 1