问题
使用python 自带的 pyyaml库中,读取yaml文件修改 再输出后会有
- 打印 字段 乱序问题
- 列表格式问题
要想保持顺序不变在 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
with open(yaml_out, 'w') as file:
yaml.safe_dump(yaml_data, file,default_flow_style=None,sort_keys=False, indent=2,default_style='')