【发布时间】:2017-01-19 09:39:08
【问题描述】:
我正在尝试使用 PyYAML 和 Python3 来编辑 YAML 文件中的值(这是一个 Hiera 数据结构,但这有点离题了)。
使用yaml.safe_load 和yaml.dump 很容易实现。我遇到的问题是我需要保留 cmets、空格、排序和其他格式。也就是说,当我编辑给定键的值时,这应该是文件中的 only 更改。 (不需要自己添加或删除密钥。)
就我而言,这些是二级密钥。我可以使用正则表达式或某种形式的状态机来做到这一点——但这很讨厌。有没有人知道一个图书馆已经很好地做到了这一点?
这是一个有关 YAML 的虚拟示例:
---
# Some form of comment block.
# Some form of comment block.
# Some form of comment block.
# This is my config block.
config::me:
key0: 123
key1: 456
# This is another config block:
applications:
frontend:
version: '2.4.2'
enabled: true
backend:
version: '4.3.9'
enabled: false
# More comments etcetera.
基本上我需要做的是定位applications.frontent.version并将值从2.4.2更新为2.4.3,而无需触及文件中的任何内容。
【问题讨论】: