在這個教程中,我們將討論 Python Pickle 範例。在我們之前的教程中,我們討論了 Python 多處理。
Python Pickle
Python Pickle 用於序列化和反序列化 Python 物件結構。Python 中的任何物件都可以被 pickled,這樣它就可以被保存到磁盤上。首先,Python pickle 會將物件序列化,然後將物件轉換為一個字符流,因此這個字符流包含了在另一個 Python 腳本中重建該物件所需的所有信息。請注意,根據文檔,pickle 模塊不安全,不能防範錯誤或惡意構造的數據。因此,從不受信任或未經身份驗證的來源接收的數據不應該被反序列化。
Python Pickle dump
在這一節中,我們將學習如何使用 Python pickle 儲存資料。為此,我們首先必須導入 pickle 模組。然後使用 pickle.dump()
函數將物件資料儲存到檔案中。pickle.dump()
函數接受 3 個參數。第一個參數是您想要儲存的物件。第二個參數是以 write-binary
(wb) 模式開啟所需檔案後獲得的檔案物件。第三個參數是鍵-值參數。該參數定義了協定。有兩種類型的協定 – pickle.HIGHEST_PROTOCOL 和 pickle.DEFAULT_PROTOCOL。查看範例代碼以了解如何使用 pickle 儲存資料。
import pickle
# 接受用戶輸入以取得資料量
number_of_data = int(input('Enter the number of data : '))
data = []
# 接受資料的輸入
for i in range(number_of_data):
raw = input('Enter data '+str(i)+' : ')
data.append(raw)
# 開啟一個檔案,用於儲存資料
file = open('important', 'wb')
# 將資訊儲存到該檔案中
pickle.dump(data, file)
# 關閉檔案
file.close()
以下程式將提示您輸入一些資料。在我的情況下,是這樣的。
Python Pickle load
檢索醃製數據的步驟非常簡單。您必須使用pickle.load()
函數來執行此操作。pickle加載函數的主要參數是通過以讀取二進制(rb)模式打開文件而獲得的文件對象。簡單!是不是。讓我們編寫代碼來檢索我們使用pickle dump代碼醃製的數據。請參見以下代碼以進行理解。
import pickle
# 打開一個文件,其中存儲了醃製的數據
file = open('important', 'rb')
# 將信息傾倒到該文件
data = pickle.load(file)
# 關閉文件
file.close()
print('Showing the pickled data:')
cnt = 0
for item in data:
print('The data ', cnt, ' is : ', item)
cnt += 1
輸出將如下:
Showing the pickled data:
The data 0 is : 123
The data 1 is : abc
The data 2 is : !@#$
Python醃製示例
I made a short video showing execution of python pickle example programs – first to store data into file and then to load and print it. As you can see that the file created by python pickle dump is a binary file and shows garbage characters in the text editor.
Python醃製的重要注意事項
關於Python pickle模塊的一些重要要點:
- 醃製協議特定於Python – 不能保證與其他編程語言兼容。這意味著您很可能無法傳輸信息以使其在其他編程語言中有用。
- 不同版本的Python之間也不能保證兼容性,因為並非所有Python數據結構都可以由該模塊序列化。
- 默認情況下使用最新版本的pickle協議,除非您手動更改它。
- 最後但並非最不重要的是,根據文件,pickle 模組不安全,無法防範錯誤或惡意構造的數據。
因此,這就是有關 Python pickle 範例的全部內容。希望你理解透徹。如有任何進一步的疑問,請使用評論區。 🙂 參考:官方文檔
Source:
https://www.digitalocean.com/community/tutorials/python-pickle-example