You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何更新YAML文件中的值并将新字典dump序列化?

更新YAML文件并写入的实现方法

问题背景

现有YAML文件内容:

%YAML 1.2
---

source: 'NULL'
target: 'NULL'

通过Python代码读取为字典后输出{'source': 'NULL', 'target': 'NULL'},现在需要将source的值更新为new_v = 23,并把更新后的内容写回原YAML文件。

实现代码

直接在读取文件的上下文管理器中完成更新和写入操作即可,完整代码如下:

import yaml

new_v = 23

with open('path/to/file.yml', 'r+') as file:
    # 加载YAML内容为字典
    value = yaml.safe_load(file)
    # 更新source字段的值
    value['source'] = new_v
    # 移动文件指针到开头,覆盖原内容
    file.seek(0)
    # 截断文件,避免原内容残留
    file.truncate()
    # 写入更新后的内容,保持格式可读性
    yaml.dump(value, file, default_flow_style=False, sort_keys=False)

关键细节说明

  • file.seek(0):将文件指针定位到文件起始位置,确保新内容从开头开始写入,不会追加到原内容后面
  • file.truncate():清空指针之后的所有内容,防止原文件长度大于新内容时,末尾残留旧数据
  • default_flow_style=False:让输出的YAML采用块级格式,和原文件风格一致,可读性更强
  • sort_keys=False:保留字典中键的原有顺序(PyYAML默认会对键进行排序)

内容的提问来源于stack exchange,提问作者i.i.k.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 12:57:11