我刚刚注意到命令行工具,调用如下:"ruamel.yaml.cmd rt—保存$yaml_FILE";,将破坏包含长字符串或散列的列表:
包含哈希的示例列表:
来源:
telegraf::inputs:
cpu:
- percpu: true
totalcpu: true
report_active: true
输出:
telegraf::inputs:
cpu:
- percpu: true
totalcpu: true
report_active: true
包含长字符串的示例列表:
来源:
rsyslog::config::snippets:
00_forward:
ensure: 'present'
lines:
- 'if $syslogfacility != 1 then {'
- 'action(Name="collector-syslog" Type="omfwd" Target="%{hiera("rsyslog_server")}" Port="514" Action.ResumeInterval="5" Protocol="tcp")'
- '}'
输出:
rsyslog::config::snippets:
00_forward:
ensure: present
lines:
- if $syslogfacility != 1 then {
- action(Name="collector-syslog" Type="omfwd" Target="%{hiera("rsyslog_server")}"
Port="514" Action.ResumeInterval="5" Protocol="tcp")
- '}'
我已经为此创建了一个错误报告,但它被删除了,并有一条评论指向https://yaml.readthedocs.io/en/latest/example.html?highlight=indent#output-作为字符串的转储。
但我不确定这段代码应该如何帮助我使用命令行工具。
还是该工具已被弃用,而我不得不推出自己的?
由于输入不一致,自动检测缩进似乎不正确(映射缩进2个位置,序列缩进4个位置,块序列指示符的偏移量为2(。与PyPI一样,ruamel.yaml.cmd
不支持序列和映射的不同缩进级别(ruamel.yaml在编写时没有,现在支持(。
除此之外,对于旧版本(2020-12-01之前(,您不能在ruamel.yaml.cmd
中设置输出的线宽,并且这些版本使用默认的80个字符进行换行。
我建议您升级到0.5.6并使用命令行选项:
yaml rt --indent 2 --width 1024 --save <yourfile>
ruamel.yaml.cmd
的适当存储库为https://sourceforge.net/p/ruamel-yaml-cmd/code/ci/default/tree/。只能从Python程序中使用的ruamel.yaml
的错误报告应包括再现错误的程序的最小源代码,如果不提供,问题将在其创建问题页面上删除