Python Pickle 示例

在這個教程中,我們將討論 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_PROTOCOLpickle.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模塊的一些重要要點:

  1. 醃製協議特定於Python – 不能保證與其他編程語言兼容。這意味著您很可能無法傳輸信息以使其在其他編程語言中有用。
  2. 不同版本的Python之間也不能保證兼容性,因為並非所有Python數據結構都可以由該模塊序列化。
  3. 默認情況下使用最新版本的pickle協議,除非您手動更改它。
  4. 最後但並非最不重要的是,根據文件,pickle 模組不安全,無法防範錯誤或惡意構造的數據。

因此,這就是有關 Python pickle 範例的全部內容。希望你理解透徹。如有任何進一步的疑問,請使用評論區。 🙂 參考:官方文檔

Source:
https://www.digitalocean.com/community/tutorials/python-pickle-example