pickle模块

Posted monkey-moon

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pickle模块相关的知识,希望对你有一定的参考价值。

pickle

先看一下下边使用pickle模块的例子:

import pickle
class Person:
  def __init__(self,n,a):
    self.name=n
    self.age=a
  def show(self):
    print self.name+"_"+str(self.age)
aa = Person("JGood", 2)
aa.show()
f=open(‘d:\p.txt‘,‘w‘)
pickle.dump(aa,f,0)#序列化存起来
f.close()
#del Person
f=open(‘d:\p.txt‘,‘r‘)
bb=pickle.load(f)#反序列化
f.close()
bb.show()

输出结果:

JGood_2
JGood_2
  • 如果不注释掉del Person的话,那么会报错当前模块找不到类的定义了。
  • 在load(file)的时候,要让python能够找到类的定义,否则会报错

那么,pickle 模块是用来干什么的呢?

  • python的pickle模块实现了基本的数据序列和反序列化。通过pickle模块的序列化操作我们能够将程序中运行的对象信息保存到文件中去,永久存储;通过pickle模块的反序列化操作,我们能够从文件中创建上一次程序保存的对象。

基本接口

1 序列化对象

pickle.dump(obj, file[, protocol])
  • 序列化对象,并将结果数据流写入到文件对象中。参数protocol是序列化模式,默认值为0,表示以文本的形式序列化。protocol的值还可以是1或2,表示以二进制的形式序列化。

2 反序列化对象。将文件中的数据解析为一个Python对象。

pickle.load(file)

以上是关于pickle模块的主要内容,如果未能解决你的问题,请参考以下文章

python常用模块(模块和包的解释,time模块,sys模块,random模块,os模块,json和pickle序列化模块)

python文件操作:pickle模块多次dump后出现的读取问题

用pickle加速sklearn/机器学习的分类任务?

pickle模块

模块调用,datetime,time,logging,递归,双层装饰器, json,pickle迭代器和生成器

pickle模块和json模块