ruamel yaml的值更改将无法使用并且会忽略缩进

问题描述:

我有一个以正确的格式将数据转储回YAML的问题。看看其他类似的问题,但没有找到解决这个问题的方法。 当前代码在Python:ruamel yaml的值更改将无法使用并且会忽略缩进

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 

应该如何代码进行修改,要么改变旧的“键”值,还是输入正确缩进的新键值?

+1

“Looked into ot她的类似问题“包括为什么不请你的链接和解释。 –

你必须给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) 

key“下的”缩进一个新值将需要:

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

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