PYTHON 幫助

msgpack python(對開發人員的運作方式)

Kannaopat Udonpant
坎納帕特·烏頓潘
2024年9月29日
分享:

介紹

MessagePack是一種高效的二進制序列化格式,可在多種語言之間進行數據交換,它類似於 JSON,但速度更快且更緊湊。 這msgpackPython 庫提供了必要的工具來處理這種格式,提供了 CPython 綁定和純 Python 實現。

MessagePack 的主要功能

  1. 效率MessagePack專為在速度和大小方面比 JSON 更高效而設計。它使用二進制格式來實現這一點。(msgpack 規範),這降低了與像 JSON 這樣的基於文本格式相關的開銷。

  2. 跨語言支持:MessagePack 支援多種程式語言,非常適合需要在不同系統和語言間共享資料的應用程式。

  3. 兼容性:Python 中的 msgpack 庫與 Python 2 和 Python 3 以及 CPython 和 PyPy 實現相容。

  4. 自訂資料類型:MessagePack 允許使用者在實現高度進階解析控制的情況下,打包和解包自訂資料類型,這對於複雜應用程式很有幫助。

安裝

在您開始讀取和寫入 messagepack 資料之前,您需要安裝msgpack可以使用 pip 完成的函式庫:

pip install msgpack

基本用法

以下是一個使用 MessagePack 進行數據序列化和反序列化的簡單示例:

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

進階功能

  1. 串流解包:MessagePack 支持串流解包,能從單一流中解包多個物件。 這對於處理大型數據集或連續數據流很有用。
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)
PYTHON
  1. 自定義資料類型:您可以為自定義資料類型定義自定義封裝和解封函數。例如,要處理日期時間自定義資料類型:
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)
PYTHON

介紹 IronPDF

msgpack python(它對開發人員的作用):圖1

IronPDF是一個強大的 Python 程式庫,專為使用 HTML、CSS、圖像和 JavaScript 創建、編輯及簽署 PDF 文件而設計。 它提供商用級性能且佔用較低的記憶體資源。 主要功能包括:

HTML 轉 PDF

將 HTML 文件、HTML 字串和 URL 轉換為 PDF。 例如,使用 Chrome PDF 渲染器將網頁呈現為 PDF。

跨平台支援

兼容各種 .NET 平台,包括 .NET Core、.NET Standard 和 .NET Framework。 它支援 Windows、Linux 和 macOS。

編輯和簽署

設置屬性、通過密碼和權限添加安全性,並對您的PDF應用數字簽名。

頁面模板和設置

自訂 PDF 的頁眉、頁腳、頁碼和可調整的邊距。 支持響應式版面和自訂紙張尺寸。

標準合規性

遵循 PDF 標準,如 PDF/A 和 PDF/UA。 支持 UTF-8 字符編碼並處理資產,例如圖像、CSS 和字體。

使用IronPDF和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")
PYTHON

程式碼說明

此腳本展示了如何將msgpack與IronPDF集成,用於序列化和反序列化數據,並從HTML內容創建PDF文檔。

故障分析

  1. 使用 msgpack 進行資料序列化:

    • 轉換 Python 數據(在這種情況下的字典)轉換為二進位格式(打包資料)使用 msgpack.packb()使用 use_bin_type=True。
  2. 使用 msgpack 反序列化資料:

    • 將二進位的 packed_data 轉回 Python 資料(未封裝_資料)使用 msgpack.unpackb()與 raw=False。
  3. 自訂資料類型處理:

    • 定義自訂編碼(encode_datetime)解碼(解碼_日期時間)使用 msgpack 序列化和反序列化時處理 datetime 物件的函數。
  4. 用於 PDF 生成的 HTML 內容:

    • 構建 HTML 字串(內容)包含:

      • 標題及子節描述序列化數據(資料和打包資料).

      • 反序列化資料(解壓縮資料).
      • 自訂資料類型序列化(datat 和 packed_datat).
  5. 使用 IronPDF 生成 PDF:

    • 使用 IronPDF(ChromePdfRenderer)生成 PDF 文件(PDF)從構建的HTML內容中(內容).
  6. 儲存 PDF:

    • 將生成的 PDF 文件保存為 "Demo-msgpack.pdf"。

輸出

msgpack python(對開發人員的運作方式):圖 2

PDF

msgpack python(對開發人員的工作原理):圖3

IronPDF 授權

IronPDF 運行於 Python 的授權金鑰上。 IronPDF for Python 提供一個免費試用授權密鑰允許用戶在購買前試用其豐富的功能。

在使用 IronPDF 套件之前,將授權密鑰放置在腳本的開頭:

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

結論

MessagePack 是一個在 Python 中用於高效數據序列化的強大工具。 其緊湊的二進制格式、跨語言支持和處理自訂數據類型的能力,使其成為各種應用程式的多功能選擇。 無論您是在處理不同系統之間的數據交換,還是在優化數據處理任務的性能,MessagePack 都提供了一個強大的解決方案。

IronPDF是一個多功能的 Python 函式庫,旨在直接從 Python 應用程式創建、操作和呈現 PDF 文件。 它簡化了將 HTML 轉換為 PDF、創建互動式 PDF 表單,以及執行合併和拆分 PDF 文件等各種文檔操作的任務。 IronPDF 無縫整合到現有的網頁技術中,為開發者提供了一套強大的工具,可以生成動態 PDF,增強文件管理和展示任務的生產力。

Kannaopat Udonpant
坎納帕特·烏頓潘
軟體工程師
在成為軟體工程師之前,Kannapat 在日本北海道大學完成了環境資源博士學位。在攻讀學位期間,Kannapat 也成為了車輛機器人實驗室的成員,該實驗室隸屬於生物生產工程學系。2022 年,他利用自己的 C# 技能,加入了 Iron Software 的工程團隊,專注於 IronPDF 的開發。Kannapat 珍視這份工作,因為他可以直接向負責撰寫大部分 IronPDF 程式碼的開發人員學習。除了同儕學習外,Kannapat 還享受在 Iron Software 工作的社交方面。當他不在撰寫程式碼或文件時,Kannapat 通常會在 PS5 上玩遊戲或重看《最後生還者》。
< 上一頁
Py2neo(開發者如何運作)
下一個 >
PyYAML(如何為開發人員運作)

準備開始了嗎? 版本: 2025.3 剛剛發布

查看許可證 >