如何更新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.
相关产品推荐
相关产品推荐

