Если вы хотите сбросить содержимое обратно в yaml, проще будет просто прочитать файл построчно, заменив {{ place-holder }}
его новым значением, когда вы его встретите.
input_file = "my_file.yaml"
output_file = "out.yaml"
with open(input_file, "r") as f_in:
with open(output_file, "w") as f_out:
for line in f_in:
line.replace("{{ place-holder }}", "new_str")
output_file.write(line)
Если вы хотите быть уверены, что ваша строка "{{ place-holder }}"
находится в блоке -sql key
, тогда вы делаете это, как пытаетесь. Вы получаете сообщение об ошибке, потому что при итерации (key, value)
словаря вам нужно использовать функцию items()
:
for k, v in data["new"]["extracts"][i].items():
Надеюсь, что это ответ на ваш вопрос.
Примечание: это Рекомендуется открывать файлы в блоке with
, чтобы они автоматически закрывались при выходе из блока или в случае ошибки.