Zum Fußzeileninhalt springen
PYTHON-HILFE

msgpack python (Wie es für Entwickler funktioniert)

MessagePack ist ein effizientes binäres Serialisierungsformat, das den Datenaustausch zwischen mehreren Sprachen ermöglicht. Es ist ähnlich wie JSON, aber schneller und kompakter. Die msgpack-Bibliothek in Python bietet die notwendigen Werkzeuge, um mit diesem Format zu arbeiten, und bietet sowohl CPython-Bindings als auch eine reine Python-Implementierung.

Hauptmerkmale von MessagePack

  1. Effizienz: MessagePack wurde entwickelt, um effizienter als JSON zu sein, sowohl in Bezug auf Geschwindigkeit als auch Größe. Dies wird durch die Verwendung eines binären Formats (msgpack spec) erreicht, das den Overhead reduziert, der mit textbasierten Formaten wie JSON verbunden ist.
  2. Unterstützung mehrerer Sprachen: MessagePack unterstützt mehrere Programmiersprachen, was es ideal für Anwendungen macht, bei denen Daten zwischen verschiedenen Systemen und Sprachen geteilt werden müssen.
  3. Kompatibilität: Die msgpack-Bibliothek in Python ist mit sowohl Python 2 als auch Python 3 sowie mit den Implementierungen CPython und PyPy kompatibel.
  4. Benutzerdefinierte Datentypen: MessagePack ermöglicht das Packen und Entpacken benutzerdefinierter Datentypen mit fortgeschrittener Entpackungskontrolle, was für komplexe Anwendungen nützlich sein kann.

Installation

Bevor Sie mit dem Lesen und Schreiben von MessagePack-Daten beginnen können, müssen Sie die msgpack-Bibliothek installieren, was mit pip möglich ist:

pip install msgpack
pip install msgpack
SHELL

Grundlegende Verwendung

Hier ist ein einfaches Beispiel, wie man MessagePack zum Serialisieren und Deserialisieren von Daten verwendet:

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)
PYTHON

Erweiterte Funktionen

  1. Streaming-Entpacken: MessagePack unterstützt das Streaming-Entpacken, das mehrere Objekte aus einem einzigen Stream entpackt. Dies ist nützlich für die Verarbeitung großer Datensätze oder kontinuierlicher Datenströme.
import msgpack
from io import BytesIO

# Create a buffer for streaming data
buf = BytesIO()
for i in range(100):
    buf.write(msgpack.packb(i))
buf.seek(0)

# Unpack data from the buffer
unpacker = msgpack.Unpacker(buf)
for unpacked in unpacker:
    print(unpacked)
import msgpack
from io import BytesIO

# Create a buffer for streaming data
buf = BytesIO()
for i in range(100):
    buf.write(msgpack.packb(i))
buf.seek(0)

# Unpack data from the buffer
unpacker = msgpack.Unpacker(buf)
for unpacked in unpacker:
    print(unpacked)
PYTHON
  1. Benutzerdefinierte Datentypen: Sie können benutzerdefinierte Pack- und Entpackfunktionen für benutzerdefinierte Datentypen definieren. Zum Beispiel, um den benutzerdefinierten Datentyp datetime zu handhaben:
import datetime
import msgpack

def encode_datetime(obj):
    """Encode datetime objects for MessagePack serialization."""
    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):
    """Decode datetime objects after MessagePack deserialization."""
    if '__datetime__' in obj:
        return datetime.datetime.strptime(obj['as_str'], '%Y%m%dT%H:%M:%S.%f')
    return obj

# Serialize data with custom datetime support
data = {'time': datetime.datetime.now()}
packed_data = msgpack.packb(data, default=encode_datetime)

# Deserialize data with custom datetime support
unpacked_data = msgpack.unpackb(packed_data, object_hook=decode_datetime)
print(unpacked_data)
import datetime
import msgpack

def encode_datetime(obj):
    """Encode datetime objects for MessagePack serialization."""
    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):
    """Decode datetime objects after MessagePack deserialization."""
    if '__datetime__' in obj:
        return datetime.datetime.strptime(obj['as_str'], '%Y%m%dT%H:%M:%S.%f')
    return obj

# Serialize data with custom datetime support
data = {'time': datetime.datetime.now()}
packed_data = msgpack.packb(data, default=encode_datetime)

# Deserialize data with custom datetime support
unpacked_data = msgpack.unpackb(packed_data, object_hook=decode_datetime)
print(unpacked_data)
PYTHON

Einführung in IronPDF

msgpack python (How It Works For Developers): Abbildung 1

IronPDF ist eine leistungsstarke Python-Bibliothek, die zum Erstellen, Bearbeiten und Signieren von PDFs unter Verwendung von HTML, CSS, Bildern und JavaScript entwickelt wurde. Sie bietet eine kommerzielle Leistung mit geringem Speicherbedarf. Hauptmerkmale sind:

HTML zu PDF Konvertierung

Konvertieren Sie HTML-Dateien, HTML-Zeichenketten und URLs in PDFs. Beispielsweise eine Webseite mithilfe des Chrome-PDF-Renderers als PDF rendern.

Plattformübergreifende Unterstützung

Kompatibel mit verschiedenen .NET-Plattformen, einschließlich .NET Core, .NET Standard und .NET Framework. Es unterstützt Windows, Linux und macOS.

Bearbeitung und Signierung

Eigenschaften festlegen, Sicherheit mit Passwörtern und Berechtigungen hinzufügen und digitale Signaturen auf Ihre PDFs anwenden.

Seitentemplates und Einstellungen

Passen Sie PDFs mit Kopf- und Fußzeilen, Seitenzahlen und einstellbaren Rändern an. Unterstützt responsive Layouts und benutzerdefinierte Papiergrößen.

Standardkonformität

Hält sich an PDF-Standards wie PDF/A und PDF/UA. Unterstützt UTF-8-Zeichenkodierung und verarbeitet Assets wie Bilder, CSS und Schriftarten.

PDF-Dokumente mit IronPDF und msgpack erzeugen

import msgpack
import datetime
from ironpdf import * 

# Apply your license key for IronPDF
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):
    """Encode datetime objects for MessagePack serialization."""
    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):
    """Decode datetime objects after MessagePack deserialization."""
    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)  

# Render a PDF from a HTML string using Python
renderer = ChromePdfRenderer()
content = "<h1>Awesome Iron PDF with msgpack</h1>"
content += "<h3>Serialize data</h3>"
content += f"<p>{data}</p>"
content += f"<p> msgpack.packb(data, use_bin_type=True):</p><p>{packed_data}</p>"
content += "<h3>Deserialize data</h3>"
content += f"<p> msgpack.unpackb(packed_data, raw=False):</p><p>{unpacked_data}</p>"
content += "<h3>Encode Custom Data Types</h3>"
content += f"<p>{datat}</p>"
content += f"<p> msgpack.packb(datat, default=encode_datetime):</p><p>{packed_datat}</p>"

pdf = renderer.RenderHtmlAsPdf(content)
pdf.SaveAs("Demo-msgpack.pdf")  # Export to a file
import msgpack
import datetime
from ironpdf import * 

# Apply your license key for IronPDF
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):
    """Encode datetime objects for MessagePack serialization."""
    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):
    """Decode datetime objects after MessagePack deserialization."""
    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)  

# Render a PDF from a HTML string using Python
renderer = ChromePdfRenderer()
content = "<h1>Awesome Iron PDF with msgpack</h1>"
content += "<h3>Serialize data</h3>"
content += f"<p>{data}</p>"
content += f"<p> msgpack.packb(data, use_bin_type=True):</p><p>{packed_data}</p>"
content += "<h3>Deserialize data</h3>"
content += f"<p> msgpack.unpackb(packed_data, raw=False):</p><p>{unpacked_data}</p>"
content += "<h3>Encode Custom Data Types</h3>"
content += f"<p>{datat}</p>"
content += f"<p> msgpack.packb(datat, default=encode_datetime):</p><p>{packed_datat}</p>"

pdf = renderer.RenderHtmlAsPdf(content)
pdf.SaveAs("Demo-msgpack.pdf")  # Export to a file
PYTHON

Code-Erklärung

Dieses Skript zeigt die Integration von msgpack mit IronPDF zur Serialisierung und Deserialisierung von Daten sowie zur Erstellung eines PDF-Dokuments aus HTML-Inhalt.

Aufschlüsselung

  1. Serialisierung von Daten mit msgpack:

    • Konvertiert Python-Daten (im Fall ein dict) in ein binäres Format (packed_data) mit msgpack.packb() unter Verwendung von use_bin_type=True.
  2. Deserialisierung von Daten mit msgpack:

    • Konvertiert die binären packed_data zurück in Python-Daten (unpacked_data) mit msgpack.unpackb() unter Verwendung von raw=False.
  3. Handhabung benutzerdefinierter Datentypen:

    • Definiert benutzerdefinierte Kodierungs- (encode_datetime) und Dekodierungsfunktionen (decode_datetime), um datetime-Objekte während der Serialisierung und Deserialisierung mit msgpack zu behandeln.
  4. HTML-Inhalt für die PDF-Erzeugung:

    • Konstruiert einen HTML-String (content), der Folgendes enthält:
      • Kopfzeile und Unterabschnitte, die die serialisierten Daten (data und packed_data) detaillieren.
      • Deserialisierte Daten (unpacked_data).
      • Serialisierung benutzerdefinierter Datentypen (datat und packed_datat).
  5. PDF-Erzeugung mit IronPDF:

    • Verwendet IronPDF (ChromePdfRenderer), um ein PDF-Dokument (pdf) aus dem erstellten HTML-Inhalt (content) zu generieren.
  6. Speichern des PDF:

    • Speichert das generierte PDF-Dokument als "Demo-msgpack.pdf".

Ausgabe

msgpack python (How It Works For Developers): Abbildung 2

PDF

msgpack python (How It Works For Developers): Abbildung 3

IronPDF-Lizenz

IronPDF läuft mit dem Lizenzschlüssel für Python. IronPDF für Python bietet einen kostenlosen Testlizenzschlüssel, damit Benutzer seine umfangreichen Funktionen vor dem Kauf ausprobieren können.

Platzieren Sie den Lizenzschlüssel am Anfang des Skripts, bevor Sie das IronPDF-Paket verwenden:

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

Abschluss

MessagePack ist ein leistungsstarkes Werkzeug für effiziente Datenserialisierung in Python. Sein kompaktes binäres Format, die Unterstützung mehrerer Sprachen und die Fähigkeit, benutzerdefinierte Datentypen zu handhaben, machen es zu einer vielseitigen Wahl für verschiedene Anwendungen. Ob Sie an Datenaustausch zwischen verschiedenen Systemen arbeiten oder die Leistung Ihrer Datenverarbeitungsaufgaben optimieren, MessagePack bietet eine robuste Lösung.

IronPDF ist eine vielseitige Python-Bibliothek, die für die Erstellung, Manipulation und das Rendern von PDF-Dokumenten direkt aus Python-Anwendungen konzipiert ist. Es vereinfacht Aufgaben wie das Konvertieren von HTML in PDF, das Erstellen interaktiver PDF-Formulare und die Durchführung verschiedener Dokumentmanipulationen wie das Zusammenführen und Aufteilen von PDF-Dateien. Mit nahtloser Integration in bestehende Webtechnologien bietet IronPDF Entwicklern ein leistungsstarkes Werkzeugset zur Erstellung dynamischer PDFs und steigert die Produktivität bei Aufgaben des Dokumentenmanagements und der Präsentation.

Curtis Chau
Technischer Autor

Curtis Chau hat einen Bachelor-Abschluss in Informatik von der Carleton University und ist spezialisiert auf Frontend-Entwicklung mit Expertise in Node.js, TypeScript, JavaScript und React. Leidenschaftlich widmet er sich der Erstellung intuitiver und ästhetisch ansprechender Benutzerschnittstellen und arbeitet gerne mit modernen Frameworks sowie der Erstellung gut strukturierter, optisch ansprechender ...

Weiterlesen