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中使用wxPython开发的一个简易笔记本程序实例
Feb 08 Python
python实现的简单猜数字游戏
Apr 04 Python
使用python实现tcp自动重连
Jul 02 Python
Tensorflow之Saver的用法详解
Apr 23 Python
基于python的Paxos算法实现
Jul 03 Python
18个Python脚本可加速你的编码速度(提示和技巧)
Oct 17 Python
利用 Python ElementTree 生成 xml的实例
Mar 06 Python
Python3 mmap内存映射文件示例解析
Mar 23 Python
怎么快速自学python
Jun 22 Python
keras和tensorflow使用fit_generator 批次训练操作
Jul 03 Python
jupyter notebook快速入门及使用详解
Nov 13 Python
Python3利用openpyxl读写Excel文件的方法实例
Feb 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
php下防止单引号,双引号在接受页面转义的设置方法
2008/09/25 PHP
PHP 单引号与双引号的区别
2009/11/24 PHP
PHP5.3安装Zend Guard Loader图文教程
2014/09/29 PHP
使用GDB调试PHP代码,解决PHP代码死循环问题
2015/03/02 PHP
使用PHP+AJAX让WordPress动态加载文章的教程
2015/12/11 PHP
ThinkPHP Where 条件中常用表达式示例(详解)
2017/03/31 PHP
laravel实现上传图片,并且制作缩略图,按照日期存放的代码
2019/10/16 PHP
Thinkphp5+Redis实现商品秒杀代码实例讲解
2020/12/29 PHP
Javascript 判断 object 的特定类转载
2007/02/01 Javascript
JavaScript与C# Windows应用程序交互方法
2007/06/29 Javascript
NodeJS学习笔记之Connect中间件模块(二)
2015/01/27 NodeJs
jQuery动态效果显示人物结构关系图的方法
2015/05/07 Javascript
javascript背景时钟实现方法
2015/06/18 Javascript
js实现新浪微博首页效果
2015/10/16 Javascript
基于JSON数据格式详解
2017/08/31 Javascript
vue按需引入element Transfer 穿梭框
2017/09/30 Javascript
详解性能更优越的小程序图片懒加载方式
2018/07/18 Javascript
ng-events类似ionic中Events的angular全局事件
2018/09/05 Javascript
浅谈webpack性能榨汁机(打包速度优化)
2019/01/09 Javascript
微信小程序 网络通信实现详解
2019/07/23 Javascript
JS XMLHttpRequest原理与使用方法深入详解
2020/04/30 Javascript
[47:36]Optic vs Newbee 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
[51:17]VGJ.T vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
浅析Python中的多重继承
2015/04/28 Python
详解tensorflow载入数据的三种方式
2018/04/24 Python
浅谈dataframe中更改列属性的方法
2018/07/10 Python
python GUI库图形界面开发之PyQt5滑块条控件QSlider详细使用方法与实例
2020/02/28 Python
python中的列表和元组区别分析
2020/12/30 Python
OPPO手机官方商城:中国手机市场出货量第一品牌
2017/10/18 全球购物
Vuori官网:运动服装的终级表现
2021/01/27 全球购物
如何用Lucene索引数据库
2016/02/23 面试题
测绘工程系学生的自我评价
2013/11/30 职场文书
给领导的感谢信范文
2015/01/23 职场文书
2015年上半年党建工作总结
2015/03/30 职场文书
四年级作文之植物
2019/09/20 职场文书
漫画《尖帽子的魔法工坊》宣布动画化
2022/04/06 日漫