Saltar al pie de página
AYUDA DE PYTHON

PyYAML (Cómo Funciona Para Desarrolladores)

PyYAML es una biblioteca de Python que funciona como un analizador y emisor de YAML. YAML (YAML Ain't Markup Language) es un formato de serialización de datos legible por humanos que se integra bien con aplicaciones de Python, ofrece gran soporte de errores, una API de extensión capaz y más. YAML se utiliza a menudo para archivos de configuración e intercambio de datos entre lenguajes con diferentes estructuras de datos, con la legibilidad humana en mente. Más adelante en este artículo, veremos IronPDF, un paquete Python para la generación de PDFs de Iron Software.

Características principales de PyYAML

  1. Formato legible por humanos: YAML está diseñado para ser fácil de leer y escribir, lo que lo hace ideal para archivos de configuración complejos y serialización de datos.
  2. Soporte completo de YAML 1.1: PyYAML soporta la especificación completa de YAML 1.1, incluyendo soporte Unicode y tipos de datos personalizados.
  3. Integración con Python: PyYAML proporciona etiquetas específicas de Python que permiten la representación de objetos Python arbitrarios, haciéndolo versátil para diversas aplicaciones.
  4. Manejo de errores: PyYAML ofrece mensajes de error razonables, que pueden ser muy útiles durante la depuración.

Instalación

Para instalar el paquete YAML, puede usar pip:

pip install pyyaml
pip install pyyaml
SHELL

Uso básico

Aquí hay un ejemplo simple de cómo usar PyYAML para cargar y descargar un documento YAML desde y hacia un objeto Python arbitrario.

import yaml

# Sample YAML data
yaml_data = """
name: John Doe
age: 30
children:
  - name: Jane Doe
    age: 10
  - name: Jim Doe
    age: 8
"""

# Load YAML data into a Python dictionary
data = yaml.safe_load(yaml_data)
print(data)

# Dump Python data back to formatted YAML
yaml_output = yaml.dump(data, default_flow_style=False)
print(yaml_output)
import yaml

# Sample YAML data
yaml_data = """
name: John Doe
age: 30
children:
  - name: Jane Doe
    age: 10
  - name: Jim Doe
    age: 8
"""

# Load YAML data into a Python dictionary
data = yaml.safe_load(yaml_data)
print(data)

# Dump Python data back to formatted YAML
yaml_output = yaml.dump(data, default_flow_style=False)
print(yaml_output)
PYTHON

Resultado

PyYAML (Cómo funciona para desarrolladores): Figura 1

Características avanzadas

  1. Tipos de datos personalizados: PyYAML permite definir constructores y representantes personalizados para manejar tipos de datos complejos para el formato canónico YAML.
import yaml

# Define a custom Python object
class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

# Function to convert a Person object to a YAML representation
def person_representer(dumper, data):
    return dumper.represent_mapping('!Person', {'name': data.name, 'age': data.age})

# Function to create a Person object from YAML representation
def person_constructor(loader, node):
    values = loader.construct_mapping(node)
    return Person(**values)

# Register custom representer and constructor for Person
yaml.add_representer(Person, person_representer)
yaml.add_constructor('!Person', person_constructor)

# Object Serialization
person = Person(name='John Doe', age=30)
yaml_data = yaml.dump(person)
print(yaml_data)

# Deserialize YAML to a Person object
loaded_person = yaml.load(yaml_data, Loader=yaml.FullLoader)
print(loaded_person.name, loaded_person.age)
import yaml

# Define a custom Python object
class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

# Function to convert a Person object to a YAML representation
def person_representer(dumper, data):
    return dumper.represent_mapping('!Person', {'name': data.name, 'age': data.age})

# Function to create a Person object from YAML representation
def person_constructor(loader, node):
    values = loader.construct_mapping(node)
    return Person(**values)

# Register custom representer and constructor for Person
yaml.add_representer(Person, person_representer)
yaml.add_constructor('!Person', person_constructor)

# Object Serialization
person = Person(name='John Doe', age=30)
yaml_data = yaml.dump(person)
print(yaml_data)

# Deserialize YAML to a Person object
loaded_person = yaml.load(yaml_data, Loader=yaml.FullLoader)
print(loaded_person.name, loaded_person.age)
PYTHON

Resultado

PyYAML (Cómo funciona para desarrolladores): Figura 2

  1. Manejo de archivos grandes: PyYAML puede manejar múltiples documentos YAML o archivos YAML grandes de manera eficiente utilizando carga y descarga basadas en flujo.
import yaml

# Load a large YAML file
with open('large_file.yaml', 'r') as file:
    data = yaml.safe_load(file)

# Dump data to a large YAML file
with open('output_file.yaml', 'w') as file:
    yaml.dump(data, file)
import yaml

# Load a large YAML file
with open('large_file.yaml', 'r') as file:
    data = yaml.safe_load(file)

# Dump data to a large YAML file
with open('output_file.yaml', 'w') as file:
    yaml.dump(data, file)
PYTHON

Resultado

PyYAML (Cómo funciona para desarrolladores): Figura 3

Presentando IronPDF

PyYAML (Cómo funciona para desarrolladores): Figura 4

IronPDF es una poderosa biblioteca de Python diseñada para crear, editar y firmar PDFs usando HTML, CSS, imágenes y JavaScript. Ofrece un rendimiento de calidad comercial con un bajo uso de memoria. Las características clave son:

  • Conversión de HTML a PDF: Convierta archivos HTML, cadenas HTML y URLs a PDFs. Por ejemplo, renderiza una página web como PDF utilizando el renderizador PDF de Chrome.

  • Soporte multiplataforma: Compatible con varias plataformas .NET, incluyendo .NET Core, .NET Standard y .NET Framework. Es compatible con Windows, Linux y macOS.

  • Edición y firma: Establezca propiedades, añada seguridad con contraseñas y permisos, y aplique firmas digitales a sus PDFs.

  • Plantillas y configuraciones de página: personalice PDFs con encabezados, pies de página, números de página y márgenes ajustables. IronPDF soporta diseños responsivos y tamaños de papel personalizados.

  • Conformidad con los estándares: IronPDF se adhiere a los estándares PDF como PDF/A y PDF/UA. Soporta codificación de caracteres UTF-8 y maneja activos como imágenes, CSS y fuentes.

Generar documentos PDF con IronPDF y PyYAML

import yaml
import json
from ironpdf import *

# Apply your license key
License.LicenseKey = "your license"

# Sample YAML data
yaml_data = """
name: IronPDF User1
age: 25
children:
  - name: IronPDF User2
    age: 23
  - name: IronPDF User3
    age: 24
"""

# Load YAML data into Python structures
data = yaml.safe_load(yaml_data)
print(data)

# Dump Python data back to YAML
yaml_output = yaml.dump(data, default_flow_style=False)
print(yaml_output)

# Write YAML to File
with open('output_file.yaml', 'w') as file:
    yaml.dump(yaml_output, file)

# Write YAML data as JSON
with open('output_file.json', 'w') as json_file:
    json.dump(data, json_file)

# Read JSON and format with indentation for readability
output = json.dumps(json.load(open('output_file.json')), indent=2)
print(output)

# Create PDF renderer
renderer = ChromePdfRenderer()

# Create a PDF from HTML containing YAML data
content = "<h1>Awesome Iron PDF with PyYAML</h1>"
content += "<p>YAML data: " + yaml_output + "</p>"
pdf = renderer.RenderHtmlAsPdf(content)

# Save the PDF document to a file
pdf.SaveAs("awesome.pdf")
import yaml
import json
from ironpdf import *

# Apply your license key
License.LicenseKey = "your license"

# Sample YAML data
yaml_data = """
name: IronPDF User1
age: 25
children:
  - name: IronPDF User2
    age: 23
  - name: IronPDF User3
    age: 24
"""

# Load YAML data into Python structures
data = yaml.safe_load(yaml_data)
print(data)

# Dump Python data back to YAML
yaml_output = yaml.dump(data, default_flow_style=False)
print(yaml_output)

# Write YAML to File
with open('output_file.yaml', 'w') as file:
    yaml.dump(yaml_output, file)

# Write YAML data as JSON
with open('output_file.json', 'w') as json_file:
    json.dump(data, json_file)

# Read JSON and format with indentation for readability
output = json.dumps(json.load(open('output_file.json')), indent=2)
print(output)

# Create PDF renderer
renderer = ChromePdfRenderer()

# Create a PDF from HTML containing YAML data
content = "<h1>Awesome Iron PDF with PyYAML</h1>"
content += "<p>YAML data: " + yaml_output + "</p>"
pdf = renderer.RenderHtmlAsPdf(content)

# Save the PDF document to a file
pdf.SaveAs("awesome.pdf")
PYTHON

Explicación del código

  1. Importaciones:

    • Importa las bibliotecas necesarias: yaml para operaciones YAML, json para operaciones JSON y ironpdf para generación de PDFs.
  2. Configuración de clave de licencia:

    • Establece la clave de licencia de IronPDF para acceso legal y funcional a la biblioteca.
  3. Datos de muestra YAML:

    • Define datos de muestra YAML para demostrar operaciones YAML.
  4. Operaciones YAML:

    • Convierte datos YAML en objetos Python usando yaml.safe_load() para manipulación.
  5. Volcado a YAML:

    • Convierte objetos Python de vuelta al formato YAML para salida usando yaml.dump().
  6. Escribir a archivos:

    • Exporta datos YAML a un archivo YAML y datos JSON a un archivo JSON para almacenamiento o transmisión.
  7. Leyendo JSON y formateo:

    • Lee datos JSON desde un archivo y los formatea para legibilidad usando json.dumps().
  8. Generación de PDF con IronPDF:

    • Usa IronPDF para renderizar una cadena HTML en un documento PDF, incluyendo datos YAML integrados.
  9. Guardando PDF:

    • Guarda el PDF generado en el sistema de archivos, demostrando la creación programática de PDFs.

Producción

PyYAML (Cómo funciona para desarrolladores): Figura 5

PDF

PyYAML (Cómo funciona para desarrolladores): Figura 6

Licencia de IronPDF

IronPDF se ejecuta con la clave de licencia para Python. IronPDF para Python ofrece una clave de licencia de prueba gratuita para permitir a los usuarios revisar sus extensas características antes de la compra.

Coloca la clave de licencia al inicio del script antes de usar el paquete IronPDF:

from ironpdf import *

# Apply your license key
License.LicenseKey = "key"
from ironpdf import *

# Apply your license key
License.LicenseKey = "key"
PYTHON

Conclusión

PyYAML es una biblioteca potente y flexible para trabajar con YAML en Python. Su formato legible por humanos, soporte completo de YAML 1.1 e integración con Python lo convierten en una excelente opción para archivos de configuración, serialización de datos y más. Ya sea que esté tratando con configuraciones simples o estructuras de datos complejas, PyYAML proporciona las herramientas que necesita para manejar datos YAML de manera efectiva.

IronPDF es un paquete de Python que facilita la conversión de contenido HTML en documentos PDF. Ofrece una API sencilla (ChromePdfRenderer) para que los desarrolladores generen PDFs de alta calidad desde HTML, incluyendo soporte para estándares web modernos como CSS y JavaScript. Esto lo convierte en una herramienta efectiva para crear y guardar documentos PDF dinámicamente directamente desde aplicaciones Python.

Curtis Chau
Escritor Técnico

Curtis Chau tiene una licenciatura en Ciencias de la Computación (Carleton University) y se especializa en el desarrollo front-end con experiencia en Node.js, TypeScript, JavaScript y React. Apasionado por crear interfaces de usuario intuitivas y estéticamente agradables, disfruta trabajando con frameworks modernos y creando manuales bien ...

Leer más