pickle是為了序列化/反序列化一個對象的,可以把一個對象持久化存儲。
成都創(chuàng)新互聯公司堅持“要么做到,要么別承諾”的工作理念,服務領域包括:成都網站設計、成都網站制作、企業(yè)官網、英文網站、手機端網站、網站推廣等服務,滿足客戶于互聯網時代的富川網站設計、移動媒體設計的需求,幫助企業(yè)找到有效的互聯網解決方案。努力成為您成熟可靠的網絡建設合作伙伴!
比如你有一個對象,想下次運行程序的時候直接用,可以直接用pickle打包存到硬盤上。或者你想把一個對象傳給網絡上的其他程序,可以用pickle打包,然后傳過去,那邊的python程序用pickle反序列化,就可以用了。
用法上,它主要有兩個函數:load和dump,load是從序列化之后的數據中解出來,dump是把對象序列化。看看幫助就好了,很簡單的。
一、mat文件
mat數據格式是Matlab的數據存儲的標準格式。在Matlab中主要使用load()函數導入一個mat文件,使用save()函數保存一個mat文件。對于文件
load('data.mat')
save('data_1.mat','A')
其中,'A'表示要保存的內容。
二、python中讀取mat文件
在python中可以使用scipy.io中的函數loadmat()讀取mat文件,函數savemat保存文件。
1、讀取文件
如上例:
#coding:UTF-8
import scipy.io as scio
dataFile = 'E://data.mat'
data = scio.loadmat(dataFile)
注意,讀取出來的data是字典格式,可以通過函數type(data)查看。
print type(data)
結果顯示
type 'dict'
找到mat文件中的矩陣:
print data['A']
結果顯示
[[ 0. ? ? ? ? ?0. ? ? ? ? ?0. ? ? ? ? ?0. ? ? ? ? ?0. ? ? ? ? ?0. ? ? ? ? ?0.
0. ? ? ? ? ?0. ? ? ? ? ?0. ? ? ? ? ?0. ? ? ? ? ?0. ? ? ? ? ?0. ? ? ? ? ?0.
。。。。。。。。。。。
0. ? ? ? ? ?0. ? ? ? ? ?0. ? ? ? ? ?0. ? ? ? ? ?0. ? ? ? ? ?0. ? ? ? ? ?0.
0.36470588 ?0.90196078 ?0.99215686 ?0.99607843 ?0.99215686 ?0.99215686
0.78431373 ?0.0627451 ? 0. ? ? ? ? ?0. ? ? ? ? ?0. ? ? ? ? ?0. ? ? ? ? ?0.
0. ? ? ? ? ?0. ? ? ? ? ?0. ? ? ? ? ?0. ? ? ? ? ?0. ? ? ? ? ?0. ? ? ? ? ?0.
。。。。。。。。。。。。
0.94117647 ?0.22745098 ?0. ? ? ? ? ?0. ? ? ? ? ?0. ? ? ? ? ?0. ? ? ? ? ?0.
0. ? ? ? ? ?0. ? ? ? ? ?0. ? ? ? ? ?0. ? ? ? ? ?0. ? ? ? ? ?0. ? ? ? ? ?0.
0. ? ? ? ? ?0. ? ? ? ? ?0. ? ? ? ? ?0. ? ? ? ? ?0. ? ? ? ? ?0. ? ? ? ? ?0.
0. ? ? ? ? ?0. ? ? ? ? ?0. ? ? ? ? ?0. ? ? ? ? ?0. ? ? ? ? ?0.30196078
。。。。。。。
0. ? ? ? ? ?0. ? ? ? ? ?0. ? ? ? ? ?0. ? ? ? ? ?0. ? ? ? ? ?0. ? ? ? ? ?0.
0. ? ? ? ? ?0. ? ? ? ? ?0. ? ? ? ? ?0. ? ? ? ? ?0. ? ? ? ? ?0. ? ? ? ? ?0. ? ? ? ?]]
格式為:
type 'numpy.ndarray'
即為numpy中的矩陣格式。
2、保存文件
將這里的data['A']矩陣重新保存到一個新的文件dataNew.mat中:
dataNew = 'E://dataNew.mat'
scio.savemat(dataNew, {'A':data['A']})
def load_data()括號里應該寫形參的名字,比如def load_data(filePath);
load_data函數內的open的參數也應該是open(filePath,encoding="UTF-8")
dataset=load_data()括號中寫需要解析的文件路徑
我沒有用過pickle模塊,從上面的錯誤來看,問題是出new_man = pickle.load(man_file)這里。
你捕獲的兩個異常都沒有進去,那么你可以再加一段異常捕獲,看看具體的錯誤是什么。
except Exception,e:
print e
python值大于0的數據保存方法:
1、用numpy.save()和numpy.load()函數。
2、用scipy.io.savemat()將數據保存為.mat格式。Python是一種跨平臺的計算機程序設計語言,是ABC語言的替代品,屬于面向對象的動態(tài)類型語言,最初被設計用于編寫自動化腳本,隨著版本的不斷更新和語言新功能的添加,越來越多被用于獨立的、大型項目的開發(fā)。python是人工智能首選的編程語言。