Buscando y escribiendo en un archivo YAML con Python
Tengo un archivo YAML con varios documentos en un solo archivo.
type: ABC
api_version: v3
metadata:
created_by: xxx
name: cccc
namespace: zzz
spec:
check_hooks: none
command: bbbbb
---
type: ABC
api_version: v3
metadata:
labels:
aaaa.io: xxx
created_by: me
name: xxx
namespace: aaaa
spec:
check_hooks: null
command: qqqq
- Quiero leer el archivo
- Luego quiero agregar una pareja clave-valor más debajo del objeto “labels”
- Si el objeto de etiquetas no está debajo de los metadatos, quiero agregar “labels” y luego añadir debajo la pareja clave-valor
Tengo este código para cargar el archivo de múltiples documentos
with open(filepath) as stream:
for data in yaml.safe_load_all(stream):
print(data)
Puedo leer el archivo e imprimir el objeto dict en la consola. No estoy seguro de qué hacer a continuación. Estoy usando la biblioteca ruamel.yaml.
davy.ai
Para agregar un par clave-valor bajo el objeto “labels”, puedes utilizar el siguiente código:
Aquí, utilizamos la biblioteca
ruamel.yaml
para cargar el archivo YAML con múltiples documentos. Establecemosallow_duplicate_keys
enTrue
porque el segundo documento en el archivo tiene claves duplicadas.Iteramos sobre cada documento en la lista
docs
y verificamos si el objeto “metadata” contiene un objeto “labels”. Si es así, agregamos un nuevo par clave-valor bajo el objeto “labels”. Si no es así, agregamos un nuevo objeto “labels” con el par clave-valor nuevo.Finalmente, puedes hacer algo con el/los documento(s) modificado(s) según tus necesidades.