1

我在以正确格式将数据转储回 YAML 时遇到问题。调查了其他类似的问题,但没有找到解决这个问题的方法。Python中的当前代码:

template = yaml.load(open(templateFile), Loader=yaml.RoundTripLoader)

template["key"] = new_value

yaml.dump(template, sys.stdout, Dumper=yaml.RoundTripDumper, indent=2)

输入:

parameters:
  key: value

输出:

parameters:
  key: value
key: new_value

预期输出:

parameters:
  key: new_value

应该如何修改代码,以更改旧的“键”值,或者输入具有正确缩进的新值?

4

1 回答 1

0

您必须将 分配new_value给正确的映射/字典:

import sys
from ruamel import yaml

template_file = 'input.yaml'
new_value = 'new_value'

template = yaml.load(open(template_file), Loader=yaml.RoundTripLoader)
template['parameters']['key'] = new_value
yaml.dump(template, sys.stdout, Dumper=yaml.RoundTripDumper, indent=2)

缩进“under”的新值key需要:

template['parameters']['newkey'] = 'added_value'

请注意,习惯上对 Python 变量使用 snake_case,例如template_fileRoundTripLoader/RoundTripDumper是类的名称)

于 2017-08-03T18:45:27.597 回答