Python. Изменение yaml файла
Нужно поменять значение в yaml файле. Получился такой скрипт:
#!/usr/bin/env python
import yaml
import argparse
parser = argparse.ArgumentParser(description='Скрипт')
parser.add_argument('key', type=str, help='key')
parser.add_argument('value', type=str, help='value')
args = parser.parse_args()
with open("values.yaml") as f:
try:
list_doc = yaml.safe_load(f)
except yaml.YAMLError as exc:
print(exc)
item = list_doc
for key in args.key.split('.')[:-1]:
item = item[key]
item[args.key.split('.')[-1]] = args.value
with open("values.yaml", "w") as f:
try:
yaml.safe_dump(list_doc, f)
except yaml.YAMLError as exc:
print(exc)
Все работает, но есть проблема, при записи ломаются мультистроковые значения.
input:
extraFiles:
jupyter_config.py:
stringData: |
c.NotebookApp.nbserver_extensions = {
"jupyter_nbextensions_configurator": True,
"ipyparallel.nbextension": True,
"jupyter_tensorboard": True,
"jupyter_server_proxy": True
}
c.NotebookApp.terminals_enabled = False
mountPath: /etc/jupyter/jupyter_config.py
webserver_config.py:
stringData: |
# -*- coding: utf-8 -*-
import os
from flask_appbuilder.security.manager import AUTH_LDAP
from flask_appbuilder.security.manager import AUTH_REMOTE_USER
output:
extraFiles:
jupyter_config.py:
mountPath: /etc/jupyter/jupyter_config.py
stringData: "c.NotebookApp.nbserver_extensions = {\n \"jupyter_nbextensions_configurator\"\
: True,\n \"ipyparallel.nbextension\": True,\n \"jupyter_tensorboard\"\
: True,\n \"jupyter_server_proxy\": True\n}\nc.NotebookApp.terminals_enabled\
\ = False\n"
webserver_config.py:
mountPath: /opt/bitnami/airflow/webserver_config.py
stringData: '# -*- coding: utf-8 -*-
import os
from flask_appbuilder.security.manager import AUTH_LDAP
from flask_appbuilder.security.manager import AUTH_REMOTE_USER
Что можно сделать, что бы не ломалось форматирование?