AYUDA DE PYTHON

msgpack python (Cómo funciona para los desarrolladores)

Publicado en 29 de septiembre, 2024
Compartir:

Introducción

MessagePack es un formato de serialización binaria eficiente que permite el intercambio de datos entre múltiples lenguajes, es similar a JSON pero más rápido y más compacto. En msgpack La biblioteca en Python proporciona las herramientas necesarias para trabajar con este formato, ofreciendo tanto enlaces CPython como una implementación pura en Python.

Características clave de MessagePack

  1. Eficiencia: MessagePack está diseñado para ser más eficiente que JSON, tanto en términos de velocidad como de tamaño. Logra esto utilizando un formato binario. (especificación msgpack), lo que reduce la sobrecarga asociada con formatos basados en texto como JSON.

  2. Soporte Multilenguaje: MessagePack admite múltiples lenguajes de programación, lo que lo hace ideal para aplicaciones donde se necesita compartir datos entre diferentes sistemas e idiomas.

  3. Compatibilidad: La biblioteca msgpack en Python es compatible tanto con Python 2 como con Python 3, así como con las implementaciones de CPython y PyPy.

  4. Tipos de datos personalizados: MessagePack permite el empaquetado y desempaquetado de tipos de datos personalizados con un control de desempaquetado avanzado real, lo cual puede ser útil para aplicaciones complejas.

Instalación

Antes de que puedas comenzar a leer y escribir datos en MessagePack, necesitas instalar el msgpack biblioteca, lo cual se puede hacer usando pip:

pip install msgpack
pip install msgpack
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'pip install msgpack
VB   C#

Uso básico

Aquí hay un ejemplo sencillo de cómo usar MessagePack para serializar y deserializar datos:

import msgpack
# Serialize key value pairs or file like object
data = {'key': 'value', 'number': 42}
packed_data = msgpack.packb(data, use_bin_type=True)
# Deserialize data
unpacked_data = msgpack.unpackb(packed_data, raw=False)
print(unpacked_data)
import msgpack
# Serialize key value pairs or file like object
data = {'key': 'value', 'number': 42}
packed_data = msgpack.packb(data, use_bin_type=True)
# Deserialize data
unpacked_data = msgpack.unpackb(packed_data, raw=False)
print(unpacked_data)
#Serialize key value pairs or file like object
#Deserialize data
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'import msgpack data = {'key': 'value', 'number': 42} packed_data = msgpack.packb(data, use_bin_type=@True) unpacked_data = msgpack.unpackb(packed_data, raw=@False) print(unpacked_data)
VB   C#

Funciones avanzadas

  1. Desempaquetado en Streaming: MessagePack admite el desempaquetado en streaming, que desempaqueta múltiples objetos desde un solo flujo. Esto es útil para procesar grandes conjuntos de datos o flujos de datos continuos.
import msgpack
from io import BytesIO
# Create a buffer
buf = BytesIO()
for i in range(100):
    buf.write(msgpack.packb(i))
buf.seek(0)
unpacker = msgpack.Unpacker(buf)
for unpacked in unpacker:
    print(unpacked)
import msgpack
from io import BytesIO
# Create a buffer
buf = BytesIO()
for i in range(100):
    buf.write(msgpack.packb(i))
buf.seek(0)
unpacker = msgpack.Unpacker(buf)
for unpacked in unpacker:
    print(unpacked)
#Create a buffer
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'import msgpack from io import BytesIO buf = BytesIO() for i in range(100): buf.write(msgpack.packb(i)) buf.seek(0) unpacker = msgpack.Unpacker(buf) for unpacked in unpacker: print(unpacked)
VB   C#
  1. Tipos de datos personalizados: Puede definir funciones de empaquetado y desempacado personalizadas para tipos de datos personalizados. Por ejemplo, para manejar el tipo de dato personalizado datetime:
import datetime
import msgpack
# uses default sequence type
def encode_datetime(obj): # default value
    if isinstance(obj, datetime.datetime):
        return {'__datetime__': True, 'as_str': obj.strftime('%Y%m%dT%H:%M:%S.%f')}
    return obj
def decode_datetime(obj):
    if '__datetime__' in obj:
        return datetime.datetime.strptime(obj['as_str'], '%Y%m%dT%H:%M:%S.%f')
    return obj
data = {'time': datetime.datetime.now()}
packed_data = msgpack.packb(data, default=encode_datetime)
unpacked_data = msgpack.unpackb(packed_data, object_hook=decode_datetime)
print(unpacked_data)
import datetime
import msgpack
# uses default sequence type
def encode_datetime(obj): # default value
    if isinstance(obj, datetime.datetime):
        return {'__datetime__': True, 'as_str': obj.strftime('%Y%m%dT%H:%M:%S.%f')}
    return obj
def decode_datetime(obj):
    if '__datetime__' in obj:
        return datetime.datetime.strptime(obj['as_str'], '%Y%m%dT%H:%M:%S.%f')
    return obj
data = {'time': datetime.datetime.now()}
packed_data = msgpack.packb(data, default=encode_datetime)
unpacked_data = msgpack.unpackb(packed_data, object_hook=decode_datetime)
print(unpacked_data)
#uses default sequence type
import datetime import msgpack Function encode_datetime(ByVal As obj) As def
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'	'__datetime__': @True, 'as_str': obj.strftime('%Y%m%dT%H:%M:%S.%f')} Return obj def decode_datetime(obj): if '__datetime__' in obj: Return datetime.datetime.strptime(obj['as_str'], '%Y%m%dT%H:%M:%S.%f') Return obj data = {'time': datetime.datetime.now()} packed_data = msgpack.packb(data, default=encode_datetime) unpacked_data = msgpack.unpackb(packed_data, object_hook=decode_datetime) print(unpacked_data)
VB   C#

Presentación de IronPDF

msgpack python (Cómo funciona para desarrolladores): Figura 1

IronPDF es una potente biblioteca de Python diseñada para crear, editar y firmar PDF utilizando HTML, CSS, imágenes y JavaScript. Ofrece un rendimiento de nivel comercial con un bajo consumo de memoria. Las características clave incluyen:

Conversión de HTML a PDF

Convierta archivos HTML, cadenas HTML y URL en PDF. Por ejemplo, renderiza una página web como PDF utilizando el renderizador de PDF de Chrome.

Soporte multiplataforma

Compatible con varias plataformas .NET, incluidas .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 PDF.

Plantillas de página y configuración

Personalice los PDF con encabezados, pies de página, números de página y márgenes ajustables. Admite diseños adaptables y tamaños de papel personalizados.

Cumplimiento de las normas

Cumple estándares PDF como PDF/A y PDF/UA. Admite la codificación de caracteres UTF-8 y gestiona activos como imágenes, CSS y fuentes.

Generar documentos PDF utilizando IronPDF y msgpack

import msgpack
import datetime
from ironpdf import * 
# Apply your license key
License.LicenseKey = "key"
# Serialize data
data = {'key': 'value', 'number': 42}
packed_data = msgpack.packb(data, use_bin_type=True)
# Deserialize data
unpacked_data = msgpack.unpackb(packed_data, raw=False)
print(unpacked_data)
#Custom Data Types
def encode_datetime(obj):
    if isinstance(obj, datetime.datetime):
        return {'__datetime__': True, 'as_str': obj.strftime('%Y%m%dT%H:%M:%S.%f')}
    return obj
def decode_datetime(obj):
    if '__datetime__' in obj:
        return datetime.datetime.strptime(obj['as_str'], '%Y%m%dT%H:%M:%S.%f')
    return obj
datat = {'time': datetime.datetime.now()}
packed_datat = msgpack.packb(datat, default=encode_datetime)
unpacked_datat = msgpack.unpackb(packed_datat, object_hook=decode_datetime)
print(unpacked_datat)  
renderer = ChromePdfRenderer()
# Create a PDF from a HTML string using Python
content = "<h1>Awesome Iron PDF with msgpack</h1>"
content += "<h3>Serialize data</h3>"
content += "<p>"+str(data)+"</p>"
content += "<p> msgpack.packb(data, use_bin_type=True):</p><p>"+str(packed_data)+"</p>"
content += "<h3>Deserialize data</h3>"
content += "<p> msgpack.unpackb(packed_data, raw=False):</p><p>"+str(unpacked_data)+"</p>"
content += "<h3>Encode Custom Data Types</h3>"
content += "<p>"+str(datat)+"</p>"
content += "<p>  msgpack.packb(datat, default=encode_datetime):</p><p>"+str(packed_datat)+"</p>"
pdf = renderer.RenderHtmlAsPdf(content)
    # Export to a file or Stream
pdf.SaveAs("Demo-msgpack.pdf")
import msgpack
import datetime
from ironpdf import * 
# Apply your license key
License.LicenseKey = "key"
# Serialize data
data = {'key': 'value', 'number': 42}
packed_data = msgpack.packb(data, use_bin_type=True)
# Deserialize data
unpacked_data = msgpack.unpackb(packed_data, raw=False)
print(unpacked_data)
#Custom Data Types
def encode_datetime(obj):
    if isinstance(obj, datetime.datetime):
        return {'__datetime__': True, 'as_str': obj.strftime('%Y%m%dT%H:%M:%S.%f')}
    return obj
def decode_datetime(obj):
    if '__datetime__' in obj:
        return datetime.datetime.strptime(obj['as_str'], '%Y%m%dT%H:%M:%S.%f')
    return obj
datat = {'time': datetime.datetime.now()}
packed_datat = msgpack.packb(datat, default=encode_datetime)
unpacked_datat = msgpack.unpackb(packed_datat, object_hook=decode_datetime)
print(unpacked_datat)  
renderer = ChromePdfRenderer()
# Create a PDF from a HTML string using Python
content = "<h1>Awesome Iron PDF with msgpack</h1>"
content += "<h3>Serialize data</h3>"
content += "<p>"+str(data)+"</p>"
content += "<p> msgpack.packb(data, use_bin_type=True):</p><p>"+str(packed_data)+"</p>"
content += "<h3>Deserialize data</h3>"
content += "<p> msgpack.unpackb(packed_data, raw=False):</p><p>"+str(unpacked_data)+"</p>"
content += "<h3>Encode Custom Data Types</h3>"
content += "<p>"+str(datat)+"</p>"
content += "<p>  msgpack.packb(datat, default=encode_datetime):</p><p>"+str(packed_datat)+"</p>"
pdf = renderer.RenderHtmlAsPdf(content)
    # Export to a file or Stream
pdf.SaveAs("Demo-msgpack.pdf")
#Apply your license key
#Serialize data
#Deserialize data
#Custom Data Types
'INSTANT VB TODO TASK: The following line could not be converted:
import msgpack import datetime from ironpdf import * License.LicenseKey = "key" data = {
If True Then
#Create a PDF from a HTML string using Python
	#Export to a file or Stream
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'	'__datetime__': @True, 'as_str': obj.strftime('%Y%m%dT%H:%M:%S.%f')} Return obj def decode_datetime(obj): if '__datetime__' in obj: Return datetime.datetime.strptime(obj['as_str'], '%Y%m%dT%H:%M:%S.%f') Return obj datat = {'time': datetime.datetime.now()} packed_datat = msgpack.packb(datat, default=encode_datetime) unpacked_datat = msgpack.unpackb(packed_datat, object_hook=decode_datetime) print(unpacked_datat) renderer = ChromePdfRenderer() content = "<h1>Awesome Iron PDF with msgpack</h1>" content += "<h3>Serialize data</h3>" content += "<p>"+str(data)+"</p>" content += "<p> msgpack.packb(data, use_bin_type=True):</p><p>"+str(packed_data)+"</p>" content += "<h3>Deserialize data</h3>" content += "<p> msgpack.unpackb(packed_data, raw=False):</p><p>"+str(unpacked_data)+"</p>" content += "<h3>Encode Custom Data Types</h3>" content += "<p>"+str(datat)+"</p>" content += "<p>  msgpack.packb(datat, default=encode_datetime):</p><p>"+str(packed_datat)+"</p>" pdf = renderer.RenderHtmlAsPdf(content) pdf.SaveAs("Demo-msgpack.pdf")
VB   C#

Código Explicación

Este script demuestra la integración de msgpack con IronPDF para la serialización y deserialización de datos, así como la creación de un documento PDF a partir de contenido HTML.

Desglose

  1. Serialización de datos con msgpack:

    • Convierte datos de Python (diccionario en este caso) en un formato binario (packed_data) usando msgpack.packb() con use_bin_type=True.
  2. Deserialización de datos con msgpack:

    • Convierte el packed_data binario de nuevo en datos de Python (datos_desempaquetados) usando msgpack.unpackb() con raw=False.
  3. Manejo de Tipos de Datos Personalizados:

    • Define codificación personalizada (encode_datetime) y decodificación (decode_datetime) funciones para manejar objetos de fecha y hora durante la serialización y deserialización utilizando msgpack.
  4. Contenido HTML para la Generación de PDF:

    • Construye una cadena HTML (contenido) que incluye:

      • Encabezado y subsecciones que detallan los datos serializados (datos y datos_empaquetados).

      • Datos deserializados (datos_desempaquetados).
      • Serialización de tipos de datos personalizados (datat y packed_datat).
  5. Generación de PDF con IronPDF:

    • Utiliza IronPDF (ChromePdfRenderer) para generar un documento PDF (pdf) del contenido HTML construido (contenido).
  6. Guardando el PDF:

    • Guarda el documento PDF generado como "Demo-msgpack.pdf".

Salida

msgpack python (Cómo funciona para desarrolladores): Figura 2

PDF

msgpack python (Cómo funciona para desarrolladores): Figura 3

Licencia IronPDF

IronPDF se ejecuta con la clave de licencia para Python. IronPDF para Python ofrece un prueba gratuita para que los usuarios puedan comprobar sus amplias funciones antes de comprarlo.

Coloque la clave de licencia al inicio del script antes de utilizar el paquete IronPDF:

from ironpdf import * 
# Apply your license key
License.LicenseKey = "key"
from ironpdf import * 
# Apply your license key
License.LicenseKey = "key"
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

Conclusión

MessagePack es una herramienta poderosa para la serialización de datos eficiente en Python. Su formato binario compacto, el soporte multilenguaje y la capacidad de manejar tipos de datos personalizados lo convierten en una opción versátil para diversas aplicaciones. Ya sea que esté trabajando en el intercambio de datos entre diferentes sistemas o optimizando el rendimiento de sus tareas de procesamiento de datos, MessagePack ofrece una solución robusta.

IronPDF es una biblioteca versátil de Python diseñada para crear, manipular y renderizar documentos PDF directamente desde aplicaciones Python. Simplifica tareas como convertir HTML a PDF, crear formularios PDF interactivos y realizar varias manipulaciones de documentos, como combinar y dividir archivos PDF. Con una integración perfecta en las tecnologías web existentes, IronPDF ofrece a los desarrolladores un conjunto de herramientas potente para generar PDFs dinámicos, mejorando la productividad en tareas de gestión de documentos y presentaciones.

SIGUIENTE >
PyYAML (Cómo funciona para desarrolladores)

¿Listo para empezar? Versión: 2024.9 acaba de salir

Instalación pip gratuita Ver licencias >