標籤:

Python 基礎—— pickle 模塊

0. 將存儲數據的變數 dump 到本地

pickle_file = data.pkltry: with open(pickle_file, wb) as f: save = {X: X, y: y} # 以字典的形式 pickle.dump(f, save, protocol=pickle.HIGHEST_PROTOCOL)except: raise

1. Using pickle.dump - TypeError: must be str, not bytes

Using pickle.dump - TypeError: must be str, not bytes

將存儲數據的變數 dump 到本地 output 文件時,對 output 文件需以二進位模式(binary mode)打開,才可使用 pickle 的dump方法:

with open(filename, wb) as fp: pickle.dump(s, fp)

  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 Simple Code

#使用pickle模塊將數據對象保存到文件 import pickledata1 = {a: [1, 2.0, 3, 4+6j], b: (string, uUnicode string), c: None}selfref_list = [1, 2, 3]selfref_list.append(selfref_list)output = open(data.pkl, wb)# Pickle dictionary using protocol 0. pickle.dump(data1, output)# Pickle the list using the highest protocol available. pickle.dump(selfref_list, output, -1)output.close()

#使用pickle模塊從文件中重構python對象 import pprint, picklepkl_file = open(data.pkl, rb)data1 = pickle.load(pkl_file)pprint.pprint(data1)data2 = pickle.load(pkl_file)pprint.pprint(data2)pkl_file.close()


推薦閱讀:

Python基本語法——列表、元組、字典、字元串
記事本能知道文本的編碼(ANSI,UTF-8等),但python要open時設置encoding?
採集方案策略之App抓包
Python實現PCA降維

TAG:Python |