【问题标题】:Up-to-date Ruamel comment examples最新的 Ruamel 评论示例
【发布时间】:2017-08-07 17:19:06
【问题描述】:

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

我尝试查看使用 Ruamel 将 cmets 添加到 YAML 文件的示例(ex1ex2),但这些示例似乎都不起作用。特别是,我什至无法正确使用ruamel.yaml.load() 函数。我总是收到此错误消息:TypeError: update() takes exactly 2 arguments (1 given)

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

编辑:包括一些抛出 TypeError 的示例代码

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='')

【问题讨论】:

  • 请包含引发该错误的程序。以及您输入的示例部分。
  • 嗨 Anthon,我从 ex1 链接完全复制了程序(参见第 9 页),并将其添加到原始帖子中。
  • 除了在 data['abc'] (which gave a SyntaxError` 之前添加换行符之外,该代码在 virtualenv(Linux,Python 2.7.10 ruamel.yaml==0.15.22)中运行良好。但是该文档来自错误的站点,您应该查看this
  • 你在windows上吗? macOS?
  • 我之前尝试过 readthedocs 中的 CommentedMap 示例,也得到了相同的 TypeError。我使用的是 RHEL v6.6;可能是某种操作系统不兼容吗? Ruamel 是否有任何类型的包依赖项? Ruamel 中的其他所有内容似乎都可以正常工作(常规 YAML 解析/转储)。

标签: python yaml ruamel.yaml


【解决方案1】:

所以事实证明,我们集群的 Ruamel 安装存在一些问题。目前,使用 Python virtualenv 可以解决所有错误。感谢@Anthon 提出使用 virtualenv 的建议。

【讨论】:

    猜你喜欢
    • 2019-04-27
    • 1970-01-01
    • 2012-01-17
    • 2021-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-05
    • 1970-01-01
    相关资源
    最近更新 更多