import pickle
# dump的結果是bytes,dump用的f檔案控制代碼需要以wb的形式開啟,load所用的f是'rb'模式
# 支援幾乎所有物件的序列化
# 對於物件的序列化需要這個物件對應的類在記憶體中
# 對於多次dump/load的操作做了良好的處理
dic =#序列化
pic_dic = pickle.dumps(dic)
print(pic_dic) # bytes型別
#反序列化
new_dic = pickle.loads(pic_dic)
print(new_dic)
# pickle支援幾乎所有物件
class student:def __init__(self,name,age):
self.name = name
self.age = age
# 例項化乙個物件
ben = student('ben',13)
pic_ben = pickle.dumps(ben) # 序列化物件
print(pic_ben)
new_ben = pickle.loads(pic_ben) #反序列化物件
print(new_ben.name) # 物件.屬性
print(new_ben.age) # 物件.屬性
# 處理檔案
class teacher:def __init__(self,name,age):
self.name = name
self.age = age
# 例項化乙個物件
carl = teacher('張三',38)
with open('pic_demo','wb') as f1:
pickle.dump(carl,f1) # 序列化物件
with open('pic_demo','rb') as f2:
ret = pickle.load(f2) # ret是反序列化後得到的物件
print(ret.name) #物件呼叫屬性 name
# 對於多次dump/load的操作做了良好的處理
with open('pic_demo','wb') as f1:pickle.dump('趙六',f1)
pickle.dump(,f1)
pickle.dump((1,2,3),f1)
pickle.dump(['a','b',[1,2,('qq',1)]],f1)
with open('pic_demo','rb') as f1:
# print(pickle.load(f1))
# print(pickle.load(f1))
# print(pickle.load(f1))
# print(pickle.load(f1))
# print(pickle.load(f1))
# print(pickle.load(f1))
# 超出範圍,報錯,eoferror: ran out of input
#不知道裡面有多少內容,用while 迴圈
while true: # 異常判斷
try:
print(pickle.load(f1))
except eoferror:
break
python序列化pickle模組入門
在機器學習中,我們常常需要把訓練好的模型儲存起來,這樣在進行決策時直接將模型讀出,而不需要重新訓練模型,這樣就大大節約了時間。python提供的pickle模組就很好地解決了這個問題,它可以序列化物件並儲存到磁碟中,並在需要的時候讀取出來,任何物件都可以執行序列化操作。1 open path,mod...
python學習 pickle模組 序列化
該pickle模組實現了用於序列化和反序列化python物件結構的二進位制協議。pickling 是將python物件層次結構轉換為位元組流的過程,unpickling 是反向操作,從而將位元組流 來自二進位制檔案或類似位元組的物件 轉換回物件層次結構。pickle模組對於錯誤或惡意構造的資料是不安...
python基於pickle模組序列化例項(七)
usr bin env python3 coding utf 8 序列化 把變數從記憶體中變成可儲存或傳輸的過程,在python中,序列化叫pickling,在其他語言中也被稱之為serialization,marshalling,flattening等等,都是乙個意思。importpickle d...