2017-08-03 45 views
1

我有一個以正確的格式將數據轉儲回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她的類似問題「包括爲什麼不請你的鏈接和解釋。 –

回答

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) 

key「下的」縮進一個新值將需要:

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

請注意,這是習慣使用snake_case for Python變量,如template_fileRoundTripLoader/RoundTripDumper是類的名稱)