1. 程式人生 > >【python模組學習】pickle庫學習實錄

【python模組學習】pickle庫學習實錄

pickle模組簡介

    pickle模組可以將記憶體中的Python物件轉化成序列化的位元組流,這是一種可以寫入任何類似檔案物件的位元組串。pickle模組也可以根據序列化的位元組流重新構建原來記憶體中的物件:轉換成原來那個物件。                                                                                                                            ——Mark Lutz

pickle模組可以有效地解決構建資料庫的問題,下面介紹pickle模組的主要方法(持續更)

pickle模組常用方法

pickle.dump(obj, file, protocol=None, *, fix_imports=True):
     此方法可以將一個物件轉換為序列化的位元組流,並寫入file檔案中。第一個引數是寫入物件,第二個引數是寫入資料夾,之後三個物件控制與python2相容的問題,在此不做解釋。 方法例項:
import pickle           #引入pickle模組
obj = '小明'
with open('D://pickle.pkl','wb') as f:  #以二進位制寫入模式開啟檔案
    pickle.dump(obj,f)  
    f.close()

注意:這裡開啟檔案的方式一定是二進位制模式,不然會報錯,原因與write()的引數有關,具體不知,以後分析了原始碼後再來解決。這裡要用二進位制寫入模式開啟

這個方法最後的執行的結果是在D盤建立了一個pickle.pkl檔案,並將'小明'這個字串以位元組流的形式存了進去。

pickle.load(file,*, fix_imports=True, encoding="ASCII", errors="strict"):
        此方法可以將之前序列化的位元組流轉換為原來的物件,及dump方法的逆過程。第一個引數是位元組流儲存的檔案,後面幾個引數暫時沒學習到

方法例項:
import pickle           #引入pickle模組
obj = '小明'
with open('D://pickle.pkl','wb') as f:  #以二進位制寫入模式開啟檔案
    pickle.dump(obj,f)
    f.close()

with open('D://pickle.pkl','rb') as f:  #以二進位制閱讀模式開啟檔案
    text = pickle.load(f)
    print(text)
>>
小明

ps:同樣要以二進位制模式開啟,不然會報錯。這裡的模式選用二進位制讀取模式


pickle.dumps(obj, protocol=None, *, fix_imports=True):

        此方法將一個物件轉化為序列化的位元組流,與dump類似,只是不寫入檔案中去。引數意義與dump方法相同 方法例項:

import pickle
obj = 'xiaoming'
text = pickle.dumps(obj)
print(text)

>>
b'\x80\x03X\x08\x00\x00\x00xiaomingq\x00.'

pickle.loads(bytes_object, *, fix_imports=True, encoding="ASCII", errors="strict"):
        此方法將一個位元組流轉為原物件,是dumps方法的逆過程。第一個引數代表位元組流物件,後面的引數暫時沒學到。 方法例項:
import pickle
obj = 'xiaoming'
text = pickle.dumps(obj)
print(text)
text=(pickle.loads(text))
print(text)

>>
b'\x80\x03X\x08\x00\x00\x00xiaomingq\x00.'
xiaoming
【未完待續】