pickle 是一個 python 中, 壓縮/保存/提取 文件的模塊,字典和列表都是能被保存的.
但必須注意的是python2以ascii形式保存,而在python3中pickle是使用轉(zhuǎn)換二進(jìn)制的數(shù)據(jù)壓縮方法保存數(shù)據(jù)
所以,在保存或者讀取數(shù)據(jù)的時候,打開文件應(yīng)該使用‘wb' 'rb'的方式
1
2
3
4
|
import pickle a = 'owoof' with open ( '111.pkl' , 'wb' ) as file : pickle.dump(a, file ) |
在pickle模塊中還有dumps()
和loads()
函數(shù),他們是直接實現(xiàn)一個二進(jìn)制和pickle表示對象的轉(zhuǎn)換,不用打開文件(這點與dump不同)
dumps()是將可讀對象轉(zhuǎn)換成二進(jìn)制文件,并返回二進(jìn)制文件,loads()是把二進(jìn)制文件轉(zhuǎn)換成可讀對象,并返回對象
在使用dump()和load()時,需要注意用with open 打開一次文件每調(diào)用一次dump()就會在文件中生成一次數(shù)據(jù), 當(dāng)再次with open 打開文件時, 之前寫數(shù)據(jù)調(diào)用了幾次dump()就最多只能調(diào)用load()幾次,而且每次dump()是和load()對應(yīng)的.
1
2
3
4
5
6
7
8
9
|
with open ( 'poins_normal.pkl' , 'rb' ) as file :with open ( 'poins_normal.pkl' , 'rb' ) as file : class_1 = pickle.load( file ) # print(np.shape(class_1)) class_2 = pickle.load( file ) labels = pickle.load( file ) class_1 = pickle.load( file ) # print(np.shape(class_1)) class_2 = pickle.load( file ) labels = pickle.load( file ) |
如上,我事先寫了三次dump(),那么之后的三次load()是一一對應(yīng)的,如果我進(jìn)行第四次load()調(diào)用,編譯器會提示data ran out of .
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對服務(wù)器之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接
原文鏈接:https://blog.csdn.net/lcqin111/article/details/83211112