python处理 yaml 时保持输入输出格式一致

问题

使用python 自带的 pyyaml库中,读取yaml文件修改 再输出后会有

  1. 打印 字段 乱序问题
  2. 列表格式问题在这里插入图片描述

解决方法

要想保持顺序不变在 dump时添加 sort_keys=False,使yaml格式保持原来的排序

def readyaml():
    with open("../data/testdata.yaml",encoding="utf-8") as f:
        doc = list(yaml.safe_load_all(f))
 
    doc[0]["body"]["username"] = "root"
    with open("../data/testdata.yaml","w",encoding="utf-8") as f:
        yaml.safe_dump_all(doc,f,sort_keys=False)

对于 列表格式问题
在 PyYAML 库中,yaml.dump() 方法的 default_flow_style 参数用于控制输出的流风格。这个参数有以下可选项:
None:根据需要选择块风格或流风格输出。
True:强制使用流风格输出。
False:强制使用块风格输出。

即添加 default_flow_style=None 即可,默认是False

其他参数还有 间隔 indent等可调节

输出时用以下的参数可以保持顺序和格式不变

with open(yaml_out, 'w') as file:
    yaml.safe_dump(yaml_data, file,default_flow_style=None,sort_keys=False, indent=2,default_style='')
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值