Я пытаюсь разобрать ввод YAML из файла:
root: {
children : { key: "test-key", version: "{{ test_version | default( '1.0.0-SNAPSHOT' ) }}"}
}
Я использую ruamel.yaml, раздел кода, который выполняет загрузку, настроен на сохранение кавычек, а затем я вручную добавляю новую запись:
yaml = ruamel.yaml.YAML()
yaml.preserve_quotes = True
yaml.width = 4096
yaml.indent(sequence=4, offset=2)
with open(yml_file, 'r') as file:
print("Modifying file: '%s'..." % str(file))
data = yaml.load(file)
data['root'][new_project_name.lower()] = {'key': "%s" % new_project_name.lower(),
'test_version': "{{ %s_version | default(\'1.0.0-SNAPSHOT\') }}"
% new_project_name.lower()}
with open(yml_file, 'w') as file:
yaml.dump(data, file)
Дело в том, что когда файл пишется с новой записью, у меня все получается в одной строке, поэтому вроде не сохраняет новые строки (CR LF), (кажется загружает и без них) а у вас знаете, есть ли способ их сохранить?
вывод (все в одной строке):
root: {children : { key: "test-key", version: "{{ test_version | default( '1.0.0-SNAPSHOT' ) }}"}}
pyyaml
иruamel.yaml
- person Poolka   schedule 18.09.2018ruamel.yaml
. В коде нет части, которая генерирует пробел между индикатором сопоставления и ключом, и, конечно же, нет кода, который иногда делает это (доkey:
), а иногда нет (доchildren:
). Всегда предоставляйте рабочий код, чтобы мы могли видеть, что вы на самом деле делаете (неправильно), не хватает всего нескольких строк, чтобы можно было вырезать и вставить, зачем делать что-то неполным? - person Anthon   schedule 18.09.2018