當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


Python Pickling和Unpickling的區別用法及代碼示例

在本文中,我們將探討 Python 中 pickling 和 unpickling 之間的主要區別。我們將討論Python的概念 詳細介紹 pickling 和 unpickling,包括其目的、語法、用法以及安全可靠的 pickling 和 unpickling 操作的注意事項。讓我們深入了解酸洗和反酸洗的世界Python.

Python 酸洗

Pickling 是用於序列化對象的 Python 術語,這需要將其轉換為可以存儲在文件中或通過網絡進行通信的二進製表示形式。 Python 具有用於酸洗對象的內置函數泡菜模塊.

示例:Python 對象序列化

在此示例中,我們創建一個名為“person.pickle”的文件,用於存儲 Python 對象的序列化形式。我們將創建一個將被序列化的字典對象‘person’。文件對象表示將用於寫入 pickle 對象的文件。然後使用 pickle.dump() 函數將 person 對象 pickle 到文件中。它需要兩個參數 - 要 pickle 的對象和 pickle 對象應寫入的文件對象。

Python3


import pickle
# Define a Python object
person = {
    "name": "Alice",
    "age": 30,
    "gender": "female"
}
# Pickle the object to a binary file
with open("person.pickle", "wb") as file:
    pickle.dump(person, file)
print("Pickling completed")

輸出:

運行此代碼後,將在同一目錄中創建一個名為“person.pickle”的二進製文件,其中包含 person 對象的 pickle 二進製表示。

Pickling completed

Python 中的 Unpickle

在 Python 中,反序列化 pickled 對象需要將其從二進製表示形式轉回可在代碼中使用的 Python 對象。這個過程稱為解酸。 Python 的內置 pickle 模塊具有 unpickle 對象的函數。

示例:Python 對象反序列化

在此示例中,我們將使用 pickle 模塊的 load() 函數在 Python 代碼中加載 pickle 文件。 pickle.load() 函數用於反序列化和取消文件中的對象。它需要一個參數 - 應從中加載對象的文件對象。未 pickle 的對象存儲在變量數據中。

Python3


import pickle
# load the data from a file
with open('data.pkl', 'rb') as f:
    data = pickle.load(f)
# print the data
print(data)

輸出

{'name': 'Alice', 'age': 30, 'gender': 'female'}

酸洗和解酸洗的區別

酸洗和反酸洗的區別如下:

酸洗 脫酸

將 Python 對象轉換為二進製表示的序列化過程。

將二進製表示形式轉換回 Python 對象的反序列化過程。

允許對象存儲在文件中或通過網絡傳輸。

從存儲的文件或接收的數據中檢索對象。

使用泡菜.dump()函數將對象寫入文件或流。

使用泡菜.load()函數從文件或流中讀取對象。

對象被轉換為人類無法讀取的二進製格式。

二進製格式被轉換回 Python 對象,可以在 Python 代碼中使用。

支持複雜對象的序列化,包括自定義類、函數和數據結構。

支持複雜對象的反序列化,包括自定義類、函數和數據結構。

可以處理循環引用並在序列化期間維護對象引用。

可以在反序列化過程中恢複對象引用,保留原始對象關係。



相關用法


注:本文由純淨天空篩選整理自mguru4c05q大神的英文原創作品 Difference Between Pickling and Unpickling in Python。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。