使用ruamel.yaml修改YAML文件导出格式异常,如何仅新增字段保留原格式?
ruamel.yaml修改YAML文件保留原格式解决方案
ruamel.yaml本身就是专门为保留YAML原始格式设计的库,你只需补充匹配原文件的格式配置即可,完整可运行代码如下:
from ruamel.yaml import YAML # 初始化YAML实例并配置格式参数 yaml = YAML() # 缩进配置和原文件对齐:映射层级缩进2空格,列表项缩进4空格,列表的'-'符号占前2位 yaml.indent(mapping=2, sequence=4, offset=2) # 保留原文件的引号、注释、空行等原有格式 yaml.preserve_quotes = True # 禁用流式输出,强制使用块式结构,避免生成紧凑的单行格式 yaml.default_flow_style = False # 可选配置:使用YAML1.2标准,避免001这类无前导引号的数值被错误解析为八进制数 yaml.version = (1, 2) # 加载原文件 with open("my_file.yaml", "r", encoding="utf-8") as f: data = yaml.load(f) # 新增目标字段 data[0]["address"] = "123 Street" # 保存到新文件 with open("my_file_new.yaml", "w", encoding="utf-8") as f: yaml.dump(data, f)
运行后生成的my_file_new.yaml会完全保留原文件的缩进、注释、值格式,仅新增你指定的address字段,最终效果如下:
# my_file.yaml - id: 001 name: Steve likes: - soccer - steak address: 123 Street - id: 002 name: Mary likes: - tennis - ice cream
内容的提问来源于stack exchange,提问作者GlaceCelery
相关产品推荐
相关产品推荐

