【python模組學習】pickle庫學習實錄
阿新 • • 發佈:2018-11-09
pickle模組簡介
pickle模組可以將記憶體中的Python物件轉化成序列化的位元組流,這是一種可以寫入任何類似檔案物件的位元組串。pickle模組也可以根據序列化的位元組流重新構建原來記憶體中的物件:轉換成原來那個物件。 ——Mark Lutzpickle模組常用方法
pickle.dump(obj, file, protocol=None, *, fix_imports=True):
此方法可以將一個物件轉換為序列化的位元組流,並寫入file檔案中。第一個引數是寫入物件,第二個引數是寫入資料夾,之後三個物件控制與python2相容的問題,在此不做解釋。 方法例項:注意:這裡開啟檔案的方式一定是二進位制模式,不然會報錯,原因與write()的引數有關,具體不知,以後分析了原始碼後再來解決。這裡要用二進位制寫入模式開啟import pickle #引入pickle模組 obj = '小明' with open('D://pickle.pkl','wb') as f: #以二進位制寫入模式開啟檔案 pickle.dump(obj,f) f.close()
這個方法最後的執行的結果是在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
【未完待續】