使用 Python 讀取 Pickle 檔案
在 Python 中,pickling 是指將 Python 物件(列表、字典等)轉換為二進位制流,而 unpickling 是指將二進位制資料流轉換為 Python 物件。
轉換後的二進位制資料流包含重建原始物件的所有資訊。不幸的是,pickle 檔案通常被認為是不安全的。
Pickle 檔案用於儲存程式的狀態(變數、物件及其狀態等的值),將 Python 物件以序列化二進位制字串的形式儲存到資料庫中,通過 TCP 或傳輸控制協議傳送資料等。
在訓練機器學習模型時,pickle 檔案用於儲存模型權重,有時,載入的訓練資料或格式化的訓練資料以 pickle 檔案的形式儲存回磁碟。
在本文中,我們將瞭解如何使用 Python 讀取這些 pickle 檔案。我們將討論兩種這樣的方式。
在 Python 中使用 pickle
模組讀取 Pickle 檔案
Python 有一個內建模組 pickle
,其中包含使用 Python 序列化和反序列化資料的實用程式。這些資料可以儲存在 pickle 檔案中。
我們可以使用 pickle
模組使用 Python 讀取 pickle 檔案。請參閱以下 Python 程式碼。
objects = []
file_name = "/path/to/the/pickle/file"
with (open(file_name, "rb")) as f:
while True:
try:
objects.append(pickle.load(f))
except EOFError:
break
在上面的程式碼中,objects
變數將儲存 pickle 檔案的所有資料。
程式碼迴圈遍歷檔案以讀取它,直到發現 EOFError
異常。同樣是資料儲存在 pickle 檔案內的物件中。
pickle
模組中的 load()
函式只會讀取單個物件。讀取一個物件後,檔案指標指向 pickle 檔案中下一個物件的開頭。
請參閱此處連結的文件以瞭解更多資訊。
在 Python 中使用 pandas
模組讀取 Pickle 檔案
我們可以使用 pandas
庫來讀取 Python 中的 pickle 檔案。
pandas
模組有一個 read_pickle()
方法,可用於讀取 pickle 檔案。
此方法接受一個 filepath_or_buffer
引數:檔案路徑、URL 或將從中載入 pickle 檔案的緩衝區。此函式將返回檔案的未醃製物件。
現在讓我們看看如何實際使用這種方法。請參閱以下 Python 程式碼。
import pandas as pd
file_name = "/path/to/the/pickle/file"
objects = pd.read_pickle(file_name)
要了解有關
read_pickle()
方法的更多資訊,請參閱此處官方文件。