python中使用pickle進行序列化

2021-08-08 11:47:28 字數 2580 閱讀 2518

python的pickle模組實現了基本的資料序列和反序列化。通過pickle模組的序列化操作我們能夠將程式中執行的物件資訊儲存到檔案中去,永久儲存;通過pickle模組的反序列化操作,我們能夠從檔案中建立上一次程式儲存的物件。

基本介面:

pickle.dump(obj, file, [,protocol])

註解:將物件obj儲存到檔案file中去。

protocol為序列化使用的協議版本,0:ascii協議,所序列化的物件使用可列印的ascii碼表示;1:老式的二進位制協議;2:2.3版本引入的新二進位制協議,較以前的更高效。其中協議0和1相容老版本的python。protocol預設值為0。

file:物件儲存到的類檔案物件。file必須有write()介面, file可以是乙個以'w'方式開啟的檔案或者乙個stringio物件或者其他任何實現write()介面的物件。如果protocol>=1,檔案物件需要是二進位制模式開啟的。

pickle.load(file)

註解:從file中讀取乙個字串,並將它重構為原來的python物件。

file:類檔案物件,有read()和readline()介面。

a ****** code

*************************====

#在此處我們在向檔案中寫入兩次的dump

#是否這兩次的寫入會被覆蓋

#答案是否定的,資料不會被覆蓋

#但是在讀出資料時需要兩次load

#分別調出兩次不同的dump

****************************************==

#使用pickle模組從檔案中重構python物件

import pprint, pickle

pkl_file = open('data.pkl', 'rb')

data1 = pickle.load(pkl_file)

pprint.pprint(data1)

data2 = pickle.load(pkl_file)

pprint.pprint(data2)

pkl_file.close()

*************************====

pickle模組中常用的方法有:

1. pickle.dump(obj, file, protocol=none,)

必填引數obj表示將要封裝的物件

必填引數file表示obj要寫入的檔案物件,file必須以二進位制可寫模式開啟,即「wb」

可選引數protocol表示告知pickler使用的協議,支援的協議有0,1,2,3,預設的協議是新增在python 3中的協議3, 其他的協議詳情見參考文件

2. pickle.load(file,*,fix_imports=true, encoding="ascii", errors="strict")

必填引數file必須以二進位制可讀模式開啟,即「rb」,其他都為可選引數

3. pickle.dumps(obj):以位元組物件形式返回封裝的物件,不需要寫入檔案中

4. pickle.loads(bytes_object): 從位元組物件中讀取被封裝的物件,並返回

pickle模組可能出現三種異常:

1. pickleerror:封裝和拆封時出現的異常類,繼承自exception

2. picklingerror: 遇到不可封裝的物件時出現的異常,繼承自pickleerror

3. unpicklingerror: 拆封物件過程中出現的異常,繼承自pickleerror

pickle 是十分有用的一種序列化工具,使我們可以將資料進行儲存到硬碟空間之中

在需要使用時可以將資料再調入到記憶體當中。

在此需要注意的是多次的dump 需要對應的load

並且在使用多個元素的儲存時,建議使用陣列,或者list,元祖等的形式

方便操作。

***********************************====

#-*-coding:utf-8 -*-

importpickle

data1=data2=pkfile=open

("data.txt",'ab')

pickle.dump(data1,pkfile)

pickle.dump(data2,pkfile)

pkfile.close()

pkfile2=open

("data.txt",'rb')

pkf=pickle.load(pkfile2)

pkf1=pickle.load(pkfile2)

print(pkf)

print(pkf1)

Python中使用pickle持久化物件

python中可以使用 pickle 模組將物件轉化為檔案儲存在磁碟上,在需要的時候再讀取並還原。pickle.dump obj,file protocol 這是將物件持久化的方法,引數的含義分別為 obj 要持久化儲存的物件 file 乙個擁有 write 方法的物件,並且這個 write 方法能...

使用Pickle儲存Python變數

使用pickle可以把變數按照原來的形式存入硬碟,不像寫入到txt文字中,是以字串的形式,讀取之後還要轉化,很麻煩。import pickle import numpy as np your data np.ones 4,5 np.uint8 wb 以二進位制寫入 data output open ...

Python中pickle模組的使用

1.pickle.dump obj,file,protocol 2.pickle.load file 函式的功能 將file中的物件序列化讀出。coding utf8 import pickle 序列化到檔案 obj 123,abcdedf ac 123 print obj wb 讀寫到二進位制檔案...