ruamel.yaml 转储前编辑文档

ruamel.yaml edit document before dump

我有一个包含此类文档的 YAML 文件

%YAML 1.2
---
!some_tag
name: xyz
constants:
  state: abc

阅读文档后,在使用ruamel.yaml.YAML().dump 转储之前,我想删除这部分文档

%YAML 1.2
---

我的输出文件应该只有文档的这些部分

!some_tag
name: xyz
constants:
  state: abc

如何做到这一点?

如果你有一个带有版本的显式标签 .version 属性 YAML() 实例已设置。您可以实例化一个新实例进行转储 或者将该属性设置为 None:

import sys
import pathlib
import ruamel.yaml

inp = pathlib.Path('input.yaml')

yaml = ruamel.yaml.YAML()
data = yaml.load(inp)
print(f'>>> version info {yaml.version}\n')
yaml.version = None
yaml.dump(data, sys.stdout)

给出:

>>> version info (1, 2)

!some_tag
name: xyz
constants:
  state: abc