使用python更新和删除YAML文件?

时间:2016-08-26 13:24:38

标签: python yaml pyyaml

我有一个YAML文件,它看起来像下面的

test:
 - exam.com
 - exam1.com
 - exam2.com
test2:
 - examp.com
 - examp1.com
 - examp2.com

我喜欢使用python管理这个文件。 任务是,我想在" test2"下添加一个条目。并删除" test"。

中的条目

1 个答案:

答案 0 :(得分:0)

首先必须加载数据,这将为您提供顶级dict(在以下示例中名为data的变量中),键的值将是列表。在这些列表中,您可以执行del resp。 insert()(或append()

import sys
import ruamel.yaml

yaml_str = """\
test:
 - exam.com
 - exam1.com
 - exam2.com
test2:
 - examp.com
 - examp1.com  # want to insert after this
 - examp2.com
"""

data = ruamel.yaml.round_trip_load(yaml_str)
del data['test'][1]
data['test2'].insert(2, 'examp1.5')
ruamel.yaml.round_trip_dump(data, sys.stdout, block_seq_indent=1)

给出:

test:
 - exam.com
 - exam2.com
test2:
 - examp.com
 - examp1.com  # want to insert after this
 - examp1.5
 - examp2.com

block_seq_indent=1是必要的,因为默认情况下ruamel.yaml会将序列值与键对齐.¹

如果你想删除输出中的注释,你可以这样做:

data['test2']._yaml_comment = None

¹这是使用ruamel.yaml YAML 1.2解析器完成的,我是作者。