使用 python 更新和删除 YAML 文件?
Posted
技术标签:
【中文标题】使用 python 更新和删除 YAML 文件?【英文标题】:YAML file update and delete using python? 【发布时间】:2017-01-03 04:39:12 【问题描述】:我有一个 YAML 文件,如下所示
test:
- exam.com
- exam1.com
- exam2.com
test2:
- examp.com
- examp1.com
- examp2.com
我喜欢使用 python 来管理这个文件。 任务是,我喜欢在“test2”下添加一个条目,并从“test”中删除条目。
【问题讨论】:
使用 yaml 库将数据加载到 python 字典中。添加/删除就像从常规 python 字典/列表中一样。写入原文件 ***.com/questions/28557626/…的可能重复 【参考方案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 解析器完成的,我是它的作者。
【讨论】:
以上是关于使用 python 更新和删除 YAML 文件?的主要内容,如果未能解决你的问题,请参考以下文章
从yaml文件读取配置,然后修改配置,怎样更新到yaml文件