python - python在yaml中插入yaml作为内联或字符串
问题描述
嗨,我正在尝试在 yaml 文件中读取插入项,该文件在 yaml 中包含 yaml,因为以下字符串是 yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: conf
labels:
name: conf
namespace: conf
data:
blackbox.yml: |
- labels:
module: http_2xx_get
targets:
- https://xxx.asd.com/pa
我想在这样的目标中插入一个新的 url
apiVersion: v1
kind: ConfigMap
metadata:
name: conf
labels:
name: conf
namespace: conf
data:
blackbox.yml: |
- labels:
module: http_2xx_get
targets:
- https://xxx.asd.com/pa
- https://xxx1.asd.com/pa
以下是我要插入的代码。它认为是字符串并且不能正常工作。
import yaml
probes = {"app": "/Users/asd/prometheus-configmap.yml"}
with open(probes['app'], 'r') as file:
app_list = yaml.load(file, Loader=yaml.FullLoader)
probes = yaml.safe_load(app_list['data']['blackbox.yml'])
probes[0]['targets'].append("https://xxx1.asd.com/pa")
with open("test.yml", "w") as yaml_file:
yaml.dump(app_list, yaml_file)
yaml文件的输出:
apiVersion: v1
data:
blackbox-flights.yml: "- labels:\n module: http_2xx_get\n targets:\n - https://xxx.asd.com/pa\n\
\ - https://xxx1.asd.com/pa\n"
kind: ConfigMap
metadata:
labels:
name: conf
name: conf
namespace: conf
解决方案
我从这里使用了以下解决方案并且工作正常。
感谢@Gary van der Merwe
这是我的代码:
class literal_unicode(str):
pass
def literal_unicode_representer(dumper, data):
return dumper.represent_scalar(u'tag:yaml.org,2002:str', data, style='|')
import yaml
probes = {"app": "/Users/asd/prometheus-configmap.yml"}
with open(probes['app'], 'r') as file:
app_list = yaml.load(file, Loader=yaml.FullLoader)
probes = yaml.safe_load(app_list['data']['blackbox.yml'])
probes[0]['targets'].append("https://xxx1.asd.com/pa")
yaml.add_representer(literal_unicode, literal_unicode_representer)
data = {
'blackbox.yml': literal_unicode(yaml.dump(probes))}
app_list['data'] = data
with open("test.yml", "w") as yaml_file:
yaml.dump(app_list, yaml_file)
推荐阅读
- jmeter - 如何在 jmeter 中运行多个 if 控制器
- arrays - 从不同的类中提取随机索引数组
- mongodb - Strapi 管理页面未以本地时间格式显示
- string - 如何将数据类型的设备令牌从 Amazon SNS 转换为可以放入设置中以在 SNS 中创建终端节点的表单?
- regex - 如何为 NS 或 NA 构建正则
- amazon-web-services - 整合注释属性是来自 AWS SageMaker Ground Truth 的空错误
- python - getrandbits 不返回确切的长度
- oracle - 如何从Oracle中的日期中提取年份?
- javascript - Vue.js:后端实现
- javascript - JavaScript 过滤器返回 null