Para usuarios de Python, puedes probar pyyaml-include .
Instalar en pc
pip install pyyaml-include
Uso
import yaml
from yamlinclude import YamlIncludeConstructor
YamlIncludeConstructor.add_to_loader_class(loader_class=yaml.FullLoader, base_dir='/your/conf/dir')
with open('0.yaml') as f:
data = yaml.load(f, Loader=yaml.FullLoader)
print(data)
Considere que tenemos tales archivos YAML :
├── 0.yaml
└── include.d
├── 1.yaml
└── 2.yaml
name: "1"
name: "2"
Incluir archivos por nombre
En el nivel superior:
Si 0.yamlfue:
!include include.d/1.yaml
Nosotros recibiremos:
{"name": "1"}
file1: !include include.d/1.yaml
file2: !include include.d/2.yaml
Nosotros recibiremos:
file1:
name: "1"
file2:
name: "2"
En secuencia:
Si 0.yamlfue:
files:
- !include include.d/1.yaml
- !include include.d/2.yaml
Nosotros recibiremos:
files:
- name: "1"
- name: "2"
ℹ Nota :
El nombre del archivo puede ser absoluto (como /usr/conf/1.5/Make.yml) o relativo (como ../../cfg/img.yml).
Incluir archivos por comodines
El nombre del archivo puede contener comodines de estilo shell. Los datos cargados de los archivos encontrados por comodines se establecerán en una secuencia.
Si 0.yamlfue:
files: !include include.d/*.yaml
Nosotros recibiremos:
files:
- name: "1"
- name: "2"
ℹ Nota :
- Por ejemplo
Python>=3.5 , si el recursiveargumento de la etiqueta !include YAML es true, el patrón “**”coincidirá con cualquier archivo y cero o más directorios y subdirectorios.
- El uso del
“**”patrón en grandes árboles de directorios puede consumir una cantidad excesiva de tiempo debido a la búsqueda recursiva.
Para habilitar el recursiveargumento, escribiremos la !includeetiqueta en Mappingo Sequencemodo:
- Argumentos en
Sequencemodo:
!include [tests/data/include.d/**/*.yaml, true]
- Argumentos en
Mappingmodo:
!include {pathname: tests/data/include.d/**/*.yaml, recursive: true}