【问题标题】:YAML file update and delete using python?使用 python 更新和删除 YAML 文件?
【发布时间】:2017-01-03 04:39:12
【问题描述】:

我有一个 YAML 文件,如下所示

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

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

【问题讨论】:

标签: python yaml pyyaml


【解决方案1】:

您首先必须加载数据,这将为您提供顶级字典(在以下示例中名为 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 解析器完成的,我是它的作者。

【讨论】:

    猜你喜欢
    • 2022-01-06
    • 2016-09-26
    • 2015-04-17
    • 2021-05-02
    • 2018-08-17
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    • 2021-10-07
    相关资源
    最近更新 更多