python數據持久存儲:pickle模塊的基本使用

python的pickle模塊實現了基本的數據序列和反序列化。python

經過pickle模塊的序列化操做咱們可以將程序中運行的對象信息保存到文件中去,永久存儲。數組

經過pickle模塊的反序列化操做,咱們可以從文件中建立上一次程序保存的對象。app

在Orange中,能夠直接打開*.pkl的文件,但須要遵循必定的規範(使用numpy產生的多維數組)。
spa

基本接口:code

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,文件對象須要是二進制模式打開的。
it

  pickle.load(file)
  從file中讀取一個字符串,並將它重構爲原來的python對象。
  file:類文件對象,有read()和readline()接口。

 示例:保存內存對象

import pickle

data1 = {: [1, 2.0, 3, 4+6j],
         : (, u),
         : None}

selfref_list = [1, 2, 3]
selfref_list.append(selfref_list)

output = open('data.pkl', 'wb')
pickle.dump(data1, output)
pickle.dump(selfref_list, output, -1)

output.close()

 示例:載入內存對象

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()
相關文章
相關標籤/搜索