Python pickle模块用法实例分析


Posted in Python onMay 27, 2015

本文实例讲述了Python pickle模块用法。分享给大家供大家参考。具体分析如下:

pickle提供了一个简单的持久化功能。可以将对象以文件的形式存放在磁盘上。

pickle.dump(obj, file[, protocol])

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

pickle.load(file)

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

其中要注意的是,在load(file)的时候,要让python能够找到类的定义,否则会报错:

比如下面的例子

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()

如果不注释掉del Person的话,那么会报错如下:

>>> 
JGood_2

Traceback (most recent call last):
 File "C:/py/test.py", line 15, in <module>
  bb=pickle.load(f)
 File "C:\Python27\lib\pickle.py", line 1378, in load
  return Unpickler(file).load()
 File "C:\Python27\lib\pickle.py", line 858, in load
  dispatch[key](self)
 File "C:\Python27\lib\pickle.py", line 1069, in load_inst
  klass = self.find_class(module, name)
 File "C:\Python27\lib\pickle.py", line 1126, in find_class
  klass = getattr(mod, name)
AttributeError: 'module' object has no attribute 'Person'

意思就是当前模块找不到类的定义了。

clear_memo()

清空pickler的“备忘”。使用Pickler实例在序列化对象的时候,它会“记住”已经被序列化的对象引用,所以对同一对象多次调用dump(obj),pickler不会“傻傻”的去多次序列化。

看下面的例子:

import StringIO
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()
fle = StringIO.StringIO()
pick = pickle.Pickler(fle)
pick.dump(aa)
val1=fle.getvalue()
print len(val1)
pick.clear_memo()
pick.dump(aa)
val2=fle.getvalue()
print len(val2)
fle.close()

上面的代码运行如下:

>>> 
JGood_2
66
132
>>>

此时再注释掉pick.clear_memo()后,运行结果如下:

>>> 
JGood_2
66
70
>>>

主要是因为,python的pickle如果不clear_memo,则不会多次去序列化对象。

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
Python查找函数f(x)=0根的解决方法
May 07 Python
基于Python_脚本CGI、特点、应用、开发环境(详解)
May 23 Python
Python tornado队列示例-一个并发web爬虫代码分享
Jan 09 Python
PyQt5每天必学之像素图控件QPixmap
Apr 19 Python
python画图——实现在图上标注上具体数值的方法
Jul 08 Python
python 实现快速生成连续、随机字母列表
Nov 28 Python
使用pytorch完成kaggle猫狗图像识别方式
Jan 10 Python
python pandas dataframe 去重函数的具体使用
Jul 20 Python
python list等分并从等分的子集中随机选取一个数
Nov 16 Python
Django数据模型中on_delete使用详解
Nov 30 Python
Pandas数据分析的一些常用小技巧
Feb 07 Python
Python代码风格与编程习惯重要吗?
Jun 03 Python
Python创建模块及模块导入的方法
May 27 #Python
Python类的用法实例浅析
May 27 #Python
Python socket编程实例详解
May 27 #Python
Python简单删除目录下文件以及文件夹的方法
May 27 #Python
python解析xml文件实例分析
May 27 #Python
Python定时执行之Timer用法示例
May 27 #Python
python定时执行指定函数的方法
May 27 #Python
You might like
smarty section简介与用法分析
2008/10/03 PHP
php使用Smarty的相关注意事项及访问变量的几种方式
2011/12/08 PHP
关于php内存不够用的快速解决方法
2013/10/26 PHP
两级联动select刷新后其值保持不变的实现方法
2014/01/27 PHP
php调用mysql存储过程实例分析
2014/12/29 PHP
PHP读取大文件的多种方法介绍
2016/04/04 PHP
yii2整合百度编辑器umeditor及umeditor图片上传问题的解决办法
2016/04/20 PHP
PHP获取路径和目录的方法总结【必看篇】
2017/03/04 PHP
PHP中用Trait封装单例模式的实现
2019/12/18 PHP
JQuery页面图片切换和新闻列表滚动效果的具体实现
2013/09/26 Javascript
JS对select控件option选项的增删改查示例代码
2013/10/21 Javascript
鼠标移到图片上变大显示而不是放大镜效果
2014/06/15 Javascript
javascript使用shift+click实现选择和反选checkbox的方法
2015/05/04 Javascript
javascript获取本机操作系统类型的方法
2015/08/13 Javascript
jQuery实现图片预加载效果
2015/11/27 Javascript
JavaScript函数柯里化详解
2016/04/29 Javascript
图文详解JavaScript的原型对象及原型链
2016/08/02 Javascript
原生js实现淘宝购物车功能
2020/06/23 Javascript
JavaScript实现简单精致的图片左右无缝滚动效果
2017/03/16 Javascript
基于js 字符串indexof与search方法的区别(详解)
2017/12/04 Javascript
nodejs实现简单的gulp打包
2017/12/21 NodeJs
微信小程序官方动态自定义底部tabBar的例子
2019/09/04 Javascript
JavaScript 实现轮播图特效的示例
2020/11/05 Javascript
python实现爬虫下载漫画示例
2014/02/16 Python
python使用pyhook监控键盘并实现切换歌曲的功能
2014/07/18 Python
Python datetime时间格式化去掉前导0
2014/07/31 Python
Django 路由控制的实现代码
2018/11/08 Python
django中SMTP发送邮件配置详解
2019/07/19 Python
Django stark组件使用及原理详解
2019/08/22 Python
python 变量初始化空列表的例子
2019/11/28 Python
解析python 类方法、对象方法、静态方法
2020/08/15 Python
一款纯css3实现的tab选项卡的实列教程
2014/12/11 HTML / CSS
教师个人的自我评价分享
2014/01/02 职场文书
中秋手机店促销方案
2014/06/16 职场文书
财务会计专业自荐书
2014/06/30 职场文书
出纳试用期工作总结2015
2015/05/28 职场文书