2017-08-07 65 views
1

我有一个很大的YAML文件,我需要以编程方式为某些键添加注释。例如,如果我看到一个键“foo”,我总是需要添加一个说“bar”的注释。最新Ruamel评论示例

我试过看例子(ex1,ex2)使用Ruamel添加评论到YAML文件,但这些例子似乎都没有工作。特别是,我似乎甚至不能正确使用ruamel.yaml.load()函数。我总是收到此错误消息:TypeError: update() takes exactly 2 arguments (1 given)

我正在使用Ruamel 0.15.22和Python 2.7.8。有什么建议么?

编辑:包括其抛出类型错误

from __future__ import print_function 
import ruamel.yaml 
inp = """\ 
abc: 
    - a # comment 1 
xyz: 
    a: 1 # comment 2 
    b: 2 
    c: 3 
    d: 4 
    e: 5 
    f: 6 # comment 3 
""" 
data = ruamel.yaml.load(inp, ruamel.yaml.RoundTripLoader) 
data['abc'].append('b') 
data['abc'].yaml_add_eol_comment('comment 4', 1) # takes column of comment 1 
data['xyz'].yaml_add_eol_comment('comment 5', 'c') # takes column of comment 2 
data['xyz'].yaml_add_eol_comment('comment 6', 'e') # takes column of comment 3 
data['xyz'].yaml_add_eol_comment('comment 7', 'd', column=20) 
print(ruamel.yaml.dump(data, Dumper=ruamel.yaml.RoundTripDumper), end='') 
+0

请包括程序,因为你有它引发的错误。并且是您输入的一个示例部分。 – Anthon

+0

嗨安东尼,我完全从ex1链接复制了该程序(请参阅第9页),并且已将它添加到原始帖子中。 –

+0

除了在'data ['abc'](给出'SyntaxError')之前在virtualenv(Linux,Python 2.7.10 ruamel.yaml == 0.15.22)中运行良好之外添加一个换行符。但该文件来自错误的网站,您应该查看[this](http://yaml.readthedocs.io/en/latest/)。 – Anthon

回答

0

所以事实证明,Ruamel我们的集群的安装有一定的问题的一些示例代码。目前,使用Python virtualenv可以解决所有错误。感谢@安永的建议去与virtualenv。