如何在不丢失注释和格式的情况下更新 YAML 文件/Python 中的 YAML 自动重构
How to update YAML file without loss of comments and formatting / YAML automatic refactoring in Python
我想更新 Python 中的 YAML 文件值而不丢失 Python 中的格式和注释。例如我想转换
YAML 文件
value: 456 # nice value
到
value: 6 # nice value
界面类似于
y = yaml.load('path')
y['value'] = 6
y.save()
在Python中是否有一些优雅的方法(无需编写新的 YAML 解析库)?
我需要系统的长期可维护解决方案 - 所以没有 regex
替换对我来说是好的,因为当你在代码中对它们中的大部分进行替换时,它们变得丑陋且难以维护。
我还没有找到任何 Python 库来完成这项工作。我找到的唯一一个正在考虑该功能但尚未实现的库是 C 库 libyaml
(issue on Github)。我错过了什么吗?
问题也可以表述为:你知道 Python 中的一些自动重构 YAML 库吗?
谢谢。
ruamel.yaml
可能是你要找的,它是一个 YAML parser/emitter 支持往返保存注释:
import sys
from ruamel.yaml import YAML
yaml_data = "value: 456 # nice value"
yaml = YAML()
data = yaml.load(yaml_data)
data["value"] = 6
yaml.dump(data, sys.stdout)
输出:
value: 6 # nice value
我想更新 Python 中的 YAML 文件值而不丢失 Python 中的格式和注释。例如我想转换
YAML 文件
value: 456 # nice value
到
value: 6 # nice value
界面类似于
y = yaml.load('path')
y['value'] = 6
y.save()
在Python中是否有一些优雅的方法(无需编写新的 YAML 解析库)?
我需要系统的长期可维护解决方案 - 所以没有 regex
替换对我来说是好的,因为当你在代码中对它们中的大部分进行替换时,它们变得丑陋且难以维护。
我还没有找到任何 Python 库来完成这项工作。我找到的唯一一个正在考虑该功能但尚未实现的库是 C 库 libyaml
(issue on Github)。我错过了什么吗?
问题也可以表述为:你知道 Python 中的一些自动重构 YAML 库吗?
谢谢。
ruamel.yaml
可能是你要找的,它是一个 YAML parser/emitter 支持往返保存注释:
import sys
from ruamel.yaml import YAML
yaml_data = "value: 456 # nice value"
yaml = YAML()
data = yaml.load(yaml_data)
data["value"] = 6
yaml.dump(data, sys.stdout)
输出:
value: 6 # nice value