【发布时间】:2017-04-13 19:29:11
【问题描述】:
原始 YAML 文件是
toplevel:
#comment1
hello: gut
#comment2
howdy: gut #horizontalcomment
#comment3
#comment4
gets: gut
#comment5
在python中,我做到了
yml = ruamel.yaml.round_trip_load(yaml_input_str)
exec("del yml['toplevel']['gets']")
output_str = ruamel.yaml.round_trip_dump(yml)
output_str 变成
toplevel:
#comment1
hello: gut
#comment2
howdy: gut #horizontalcomment
#comment5
comment3 和comment4 消失。这是设计的还是错误的?
【问题讨论】:
-
看看这个答案:stackoverflow.com/a/38252508/252648。看起来对 cmets 的处理还没有完全完成。
-
@mangoDrunk
ruamel.yaml的往返模式的目的是能够加载 YAML 文件(例如用于配置),更改一些值并将文件写回而不会丢失厘米。您链接到的帖子的作者试图做的事情超出了其设计目的。在ruamel.yaml中恰好有一些机制可以更容易地实现该目标,而不是从其他尚未完全完成 cmets 的 Python 包(即所有其他 Python 包)开始,包括不丢弃 cmets阅读时。
标签: ruamel.yaml