Leer y escribir YAML en un archivo en Python

L

Introducción

En este tutorial, aprenderemos a usar el YAML biblioteca en Python 3. YAML son las siglas de Yet Another Markup Language.

En los últimos años se ha vuelto muy popular por su uso en el almacenamiento de datos de forma serializada para archivos de configuración. Dado que YAML es esencialmente un formato de datos, la biblioteca YAML es bastante breve, ya que la única funcionalidad que se requiere es la capacidad de analizar archivos con formato YAML.

En este artículo, comenzaremos viendo cómo se almacenan los datos en un archivo YAML, y luego cargaremos esos datos en un objeto Python. Por último, aprenderemos cómo almacenar un objeto Python en un archivo YAML. Vamos a empezar.

Antes de seguir adelante, existen algunos requisitos previos para este tutorial. Debe tener un conocimiento básico de la sintaxis de Python y / o haber tenido al menos experiencia de programación de nivel principiante con algún otro lenguaje. Aparte de eso, el tutorial es bastante simple y fácil de seguir para principiantes.

Instalación

El proceso de instalación de YAML es bastante sencillo. Hay dos maneras de hacerlo; comenzaremos con el fácil primero:

Método 1: vía Pip

La forma más sencilla de instalar la biblioteca YAML en Python es a través de la pepita gerente de empaquetación. Si tiene pip instalado en su sistema, ejecute el siguiente comando para descargar e instalar YAML:

$ pip install pyyaml

Método 2: vía fuente

En caso de que no tenga instalado pip o tenga algún problema con el método anterior, puede ir a la biblioteca página fuente. Descargue el repositorio como un archivo zip, abra la terminal o el símbolo del sistema y navegue hasta el directorio donde se descargó el archivo. Una vez que esté allí, ejecute el siguiente comando:

$ python setup.py install

Ejemplos de código YAML

En esta sección, aprenderemos cómo manejar (manipular) archivos YAML, comenzando con cómo leerlos, es decir, cómo cargarlos en nuestro script Python para que podamos usarlos según nuestras necesidades. Entonces, comencemos.

Leyendo archivos YAML en Python

En esta sección, veremos cómo leer archivos YAML en Python.

Comencemos creando dos archivos con formato YAML.

El contenido del primer archivo es el siguiente:

# fruits.yaml file

apples: 20
mangoes: 2
bananas: 3
grapes: 100
pineapples: 1

El contenido del segundo archivo es el siguiente:

# categories.yaml file

sports:

  - soccer
  - football
  - basketball
  - cricket
  - hockey
  - table tennis

countries:

  - Pakistan
  - USA
  - India
  - China
  - Germany
  - France
  - Spain

Puedes ver que el fruits.yaml y categories.yaml los archivos contienen diferentes tipos de datos. El primero contiene información solo sobre una entidad, es decir, frutas, mientras que el segundo contiene información sobre deportes y países.

Intentemos ahora leer los datos de los dos archivos que creamos usando un script de Python. los load() método del yaml El módulo se puede utilizar para leer archivos YAML. Mira el siguiente guión:

# process_yaml.py file

import yaml

with open(r'E:datafruits.yaml') as file:
    # The FullLoader parameter handles the conversion from YAML
    # scalar values to Python the dictionary format
    fruits_list = yaml.load(file, Loader=yaml.FullLoader)

    print(fruits_list)

Salida:

{ 'apples': 20, 'mangoes': 2, 'bananas': 3, 'grapes': 100, 'pineapples': 1 }

En el script de arriba especificamos yaml.FullLoader como el valor de la Loader parámetro que carga el lenguaje YAML completo, evitando la ejecución de código arbitrario. En lugar de utilizar el load función y luego pasar yaml.FullLoader como el valor de la Loader parámetro, también puede utilizar el full_load() función, como veremos en el siguiente ejemplo.

Intentemos ahora leer el segundo archivo YAML de manera similar usando un script de Python:

# read_categories.py file

import yaml

with open(r'E:datacategories.yaml') as file:
    documents = yaml.full_load(file)

    for item, doc in documents.items():
        print(item, ":", doc)

Dado que hay 2 documentos en el categories.yaml archivo, ejecutamos un bucle para leer ambos.

Salida:

sports : ['soccer', 'football', 'basketball', 'cricket', 'hockey', 'table tennis']
countries : ['Pakistan', 'USA', 'India', 'China', 'Germany', 'France', 'Spain']

Como puede ver en los dos últimos ejemplos, la biblioteca maneja automáticamente la conversión de datos con formato YAML a diccionarios y listas de Python.

Escribir archivos YAML en Python

Ahora que hemos aprendido cómo convertir un archivo YAML en un diccionario Python, intentemos hacer las cosas al revés, es decir, serializar un diccionario Python y almacenarlo en un archivo con formato YAML. Para este propósito, usemos el mismo diccionario que obtuvimos como resultado de nuestro último programa.

import yaml

dict_file = [{'sports' : ['soccer', 'football', 'basketball', 'cricket', 'hockey', 'table tennis']},
{'countries' : ['Pakistan', 'USA', 'India', 'China', 'Germany', 'France', 'Spain']}]

with open(r'E:datastore_file.yaml', 'w') as file:
    documents = yaml.dump(dict_file, file)

los dump() El método toma el diccionario de Python como el primero y un objeto File como el segundo parámetro.

Una vez que se ejecuta el código anterior, un archivo llamado store_file.yaml se creará en su directorio de trabajo actual.

# store_file.yaml file contents:

- sports:

  - soccer
  - football
  - basketball
  - cricket
  - hockey
  - table tennis
- countries:

  - Pakistan
  - USA
  - India
  - China
  - Germany
  - France
  - Spain

Otra funcionalidad útil que ofrece la biblioteca YAML para el dump() el método es el sort_keys parámetro. Para mostrar lo que hace, aplicémoslo en nuestro primer archivo, es decir, frutas.yaml:

import yaml

with open(r'E:datafruits.yaml') as file:
    doc = yaml.load(file, Loader=yaml.FullLoader)

    sort_file = yaml.dump(doc, sort_keys=True)
    print(sort_file)

Salida:

apples: 20
bananas: 3
grapes: 100
mangoes: 2
pineapples: 1

Puede ver en la salida que las frutas se han ordenado en orden alfabético.

Conclusión

En este breve tutorial, aprendimos cómo instalar la biblioteca YAML de Python (pyyaml) para manipular archivos con formato YAML. Cubrimos la carga del contenido de un archivo YAML en nuestro programa Python como diccionarios, así como la serialización de diccionarios de Python en archivos YAML y el almacenamiento de sus claves. La biblioteca es bastante breve y solo ofrece funcionalidades básicas.

About the author

Ramiro de la Vega

Bienvenido a Pharos.sh

Soy Ramiro de la Vega, Estadounidense con raíces Españolas. Empecé a programar hace casi 20 años cuando era muy jovencito.

Espero que en mi web encuentres la inspiración y ayuda que necesitas para adentrarte en el fantástico mundo de la programación y conseguir tus objetivos por difíciles que sean.

Add comment

Sobre mi

Últimos Post

Etiquetas

Esta web utiliza cookies propias para su correcto funcionamiento. Al hacer clic en el botón Aceptar, aceptas el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad