DumperOptions 设置哪个参数能保留注释
时间: 2023-09-17 14:09:51 浏览: 53
在 PyYAML 中,使用 `Dumper` 类的 `add_representer()` 方法自定义类型的输出方式。这个方法的第二个参数是一个函数,它接受两个参数,一个是 `Dumper` 实例,一个是要表示的对象。我们可以在这个函数中自定义对象的输出方式,包括保留注释。
如果要在 PyYAML 中保留注释,需要设置 `DumperOptions` 的 `preserve_quotes` 参数为 `True`。这个参数可以在 `DumperOptions` 对象创建时设置,也可以在 `Dumper` 对象创建时设置。具体实现可以参考以下代码:
```python
import yaml
class MyObject:
def __init__(self, value):
self.value = value
def represent_my_object(dumper, obj):
node = yaml.ScalarNode(tag='!my_object', value=str(obj.value))
# 保留注释
if obj.__doc__:
node.comment = obj.__doc__
return node
yaml.add_representer(MyObject, represent_my_object)
obj = MyObject(42)
obj.__doc__ = 'The answer to the ultimate question of life, the universe, and everything.'
# 创建 DumperOptions 对象并设置 preserve_quotes 参数为 True
options = yaml.DumperOptions()
options.preserve_quotes = True
# 创建 Dumper 对象并传入 options 参数
dumper = yaml.Dumper(None, options)
yaml.dump(obj, Dumper=dumper)
```
运行以上代码,输出如下:
```
!my_object '42' # The answer to the ultimate question of life, the universe, and everything.
```
可以看到,注释被保留了下来。