使用 ruamel yaml 更改值将不起作用并忽略缩进
Value change with ruamel yaml won't work and ignores indenting
我在以正确的格式将数据转储回 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
应该如何修改代码,是更改旧的 "key" 值,还是输入一个缩进正确的新值?
您必须将 new_value
分配给右侧 mapping/dict:
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_file
(RoundTripLoader
/RoundTripDumper
是[=27的名称=])
我在以正确的格式将数据转储回 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
应该如何修改代码,是更改旧的 "key" 值,还是输入一个缩进正确的新值?
您必须将 new_value
分配给右侧 mapping/dict:
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_file
(RoundTripLoader
/RoundTripDumper
是[=27的名称=])