Leer y escribir YAML en un archivo en Python

    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.

    Te puede interesar:Análisis de datos de la API con MongoDB, Seaborn y Matplotlib

    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.

    Te puede interesar:Revisión del curso: Domine la entrevista de Python

    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:

    Te puede interesar:Resolver problemas de secuencia con LSTM en Keras: Parte 2
    # 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.

    Te puede interesar:Resolución de problemas de secuencias con LSTM en Keras

    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.

    Te puede interesar:Algoritmos de búsqueda en 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:

    Te puede interesar:Programación de restricciones con python-constraint
    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.

    Rate this post

    Etiquetas: