如何在不丢失注释和格式的情况下更新 YAML 文件 / Python 中的 YAML 自动重构

2024-05-18

我想在 Python 中更新 YAML 文件值,而不丢失 Python 中的格式和注释。例如我想改造

YAML 文件

value: 456                  # nice value

to

value: 6                  # nice value

界面类似于

y = yaml.load('path')
y['value'] = 6
y.save()

有什么方法可以在Python中优雅地做到这一点(无需编写新的YAML解析库)?

我需要系统的长期可维护的解决方案 - 所以不需要regex替换对我来说没问题,因为当您在代码中对其中的大部分进行替换时,它们会变得丑陋且难以维护。

我还没有找到任何可以完成这项工作的 Python 库。我发现的唯一正在考虑该功能但尚未实现的库是 C 库libyaml(Github 上的问题 https://github.com/yaml/libyaml/issues/42)。我有错过任何吗?

这个问题也可以表述为:你知道Python中的一些自动重构YAML库吗?

Thanks.


ruamel.yaml https://pypi.org/project/ruamel.yaml/可能就是您正在寻找的,它是一个支持注释往返保存的 YAML 解析器/发射器:

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)

Output:

value: 6                    # nice value
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在不丢失注释和格式的情况下更新 YAML 文件 / Python 中的 YAML 自动重构 的相关文章

随机推荐