序列化模組2 pickle

2022-07-29 16:42:13 字數 1794 閱讀 7194

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...