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