Вы можете использовать PyYAML для чтения файла YAML в объект python с safe_load()
:
import yaml
with open("data.yml") as yml_file:
data = yaml.safe_load(yml_file)
Вы можете установить эту библиотеку с pip install PyYAML
.
Затем вы можете создать рекурсивную функцию для recurse объекта python и update
словаря с данными, которые вы ему передаете, с помощью ключа поиска :
def insert_data_rec(iterable, search_key, data):
if isinstance(iterable, list):
for item in iterable:
if isinstance(item, (list, dict)):
insert_data_rec(item, search_key, data)
elif isinstance(iterable, dict):
for k, v in iterable.items():
if k == search_key:
iterable[k].update(data)
if isinstance(v, (list, dict)):
insert_data_rec(v, search_key, data)
Затем вы можете вызвать эту функцию, чтобы изменить data
и вывести новое содержимое с помощью safe_dump()
:
insert_data_rec(data, search_key='params', data={'MY_NAME': 'Rohith'})
print(yaml.safe_dump(data))
, который выводит следующие данные .