使用 Pickle 序列化和反序列化物件

pickle 模組實現了一種演算法,用於將任意 Python 物件轉換為一系列位元組。此過程也稱為序列化物件。然後可以傳送或儲存表示物件的位元組流,並且稍後重建該位元組流以建立具有相同特徵的新物件。

對於最簡單的程式碼,我們使用 dump()load() 函式。

序列化物件

import pickle

# An arbitrary collection of objects supported by pickle.
data = {
    'a': [1, 2.0, 3, 4+6j],
    'b': ("character string", b"byte string"),
    'c': {None, True, False}
}

with open('data.pickle', 'wb') as f:
    # Pickle the 'data' dictionary using the highest protocol available.
    pickle.dump(data, f, pickle.HIGHEST_PROTOCOL)

要反序列化物件

import pickle

with open('data.pickle', 'rb') as f:
    # The protocol version used is detected automatically, so we do not
    # have to specify it.
    data = pickle.load(f)

使用 pickle 和 byte 物件

使用 dumpsloads 函式也可以序列化和反序列化位元組物件,這相當於 dumpload

serialized_data = pickle.dumps(data, pickle.HIGHEST_PROTOCOL)
# type(serialized_data) is bytes

deserialized_data = pickle.loads(serialized_data)
# deserialized_data == data