如何使用PyYAML向已有YAML脚本的tags键中添加数据
现有脚本的问题
- 使用文件追加模式
'a',导致新内容被添加到文件末尾,而非修改原有tags列表 - 数据结构错误:
tags是列表类型,每个元素是键值对字典,而非嵌套字典结构
正确实现方案(保留原文件注释与格式)
原生pyyaml无法保留YAML文件的注释和原有格式,推荐使用ruamel.yaml库处理,步骤如下:
- 安装依赖库:
pip install ruamel.yaml
- 编写修改脚本:
from ruamel.yaml import YAML # 初始化YAML对象,保留原有格式和注释 yaml = YAML() yaml.preserve_quotes = True # 读取原YAML文件 with open('test.yml', 'r') as infile: data = yaml.load(infile) # 向tags列表添加新条目 data['tags'].append({'managed_by': 'Teams'}) # 写回原文件 with open('test.yml', 'w') as outfile: yaml.dump(data, outfile)
若使用原生pyyaml(会丢失注释)
如果不需要保留注释,也可以用原生pyyaml实现:
import yaml # 读取原文件内容 with open('test.yml', 'r') as infile: data = yaml.safe_load(infile) # 添加新条目到tags列表 data['tags'].append({'managed_by': 'Teams'}) # 写回文件(注意会丢失原注释) with open('test.yml', 'w') as outfile: yaml.dump(data, outfile, indent=2, default_flow_style=False)
效果验证
执行脚本后,tags列表会新增指定条目,最终效果如下:
tags: - application_name:testin123 - cloud_supportteam:eagles - technical_applicationid:0000 - application:default - lifecycle:default - function:default-api-key - managed_by:Teams
内容的提问来源于stack exchange,提问作者DMUN
相关产品推荐
相关产品推荐

