2017-08-03 13 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

"Look into into ot彼女の似たような質問 "にはリンクや説明が含まれています。 –

答えて

0

あなたは正しいマッピング/ dictのにnew_valueを割り当てる必要があります:key "の" インデント

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) 

新しい値が必要になります。

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

をそれが通例であることに注意してくださいtemplate_fileのようなPython変数にsnake_caseを使用する(RoundTripLoader/RoundTripDumperはクラス名です)

関連する問題