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.

    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.

    Etiquetas:

    Deja una respuesta

    Tu direcci贸n de correo electr贸nico no ser谩 publicada. Los campos obligatorios est谩n marcados con *