要在Python中實作持久化對象,請使用下列函式庫。
「架子」是一個持久的、類似字典的物件。與「dbm」資料庫的區別在於,架子中的值(不是鍵!)本質上可以是任意 Python 物件 - pickle 模組可以處理的任何物件。這包括大多數類別實例、遞歸資料類型以及包含大量共享子物件的物件。
它有一些關鍵方法 -
shelve.open() - 開啟持久字典。指定的檔案名稱是基礎資料庫的基本檔案名稱。副作用是,檔案名稱中可能會新增副檔名,並且可能會建立多個檔案。預設情況下,底層資料庫檔案以讀寫方式開啟。
shelve.sync() − 如果使用writeback設定為True開啟了shelf,則將快取中的所有條目寫回。如果可行,也會清空快取並將持久性字典與磁碟上的資料同步。當使用close()關閉shelf時,會自動呼叫此方法。
shelve.close() − 同步並關閉持久化字典物件。
pickle 模組實作了用於序列化和反序列化 Python 物件的二進位協議 結構。
Pickling 是將Python物件層次結構轉換為位元組的過程 流。要序列化一個物件層次結構,只需呼叫dumps()函數。
Unpickling是反向操作。從二進位檔案或類似位元組物件的位元組流中解析出來的 將其轉換回物件層次結構。若要反序列化資料流,您呼叫loads()函數 功能。
以下是pickle模組提供的函數。
pickle.dump() - 將物件的pickle表示寫入開啟的檔案物件檔案中。
pickle.dumps() − 傳回物件的pickle表示作為一個位元組對象,而不是 將其寫入文件中。
pickle.load() - 從開啟的檔案物件檔案中讀取物件的pickled表示。
pickle.loads() - 傳回 pickled 表示資料的重構物件層次結構 物件的
首先,匯入pickle模組 -
import pickle
我們已經建立了以下輸入以進行pickle。
my_data = { 'BMW', 'Audi', 'Toyota', 'Benz'}
demo.pickle 檔案已建立。這個相同的 .pickle 檔案是用上面的清單進行醃製的。
with open("demo.pickle","wb") as file_handle: pickle.dump(my_data, file_handle, pickle.HIGHEST_PROTOCOL)
現在,取消上面的 pickled 檔案並取得輸入值。
with open("demo.pickle","rb") as file_handle: res = pickle.load(file_handle) print(res_data)
現在讓我們看看完整的範例。
import pickle # Input Data my_data = { 'BMW', 'Audi', 'Toyota', 'Benz'} # Pickle the input with open("demo.pickle","wb") as file_handle: pickle.dump(my_data, file_handle, pickle.HIGHEST_PROTOCOL) # Unpickle the above pickled file with open("demo.pickle","rb") as file_handle: res = pickle.load(file_handle) print(my_data) # display the output
set(['Benz', 'Toyota', 'BMW', 'Audi'])
以上是如何在Python中實現持久化物件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!