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内置数据类型详解
Aug 18 Python
python实现同时给多个变量赋值的方法
Apr 30 Python
python使用pil进行图像处理(等比例压缩、裁剪)实例代码
Dec 11 Python
Python画柱状统计图操作示例【基于matplotlib库】
Jul 04 Python
python使用正则筛选信用卡
Jan 27 Python
在Python 字典中一键对应多个值的实例
Feb 03 Python
Python实现Linux监控的方法
May 16 Python
python修改字典键(key)的方法
Aug 05 Python
Pytorch提取模型特征向量保存至csv的例子
Jan 03 Python
Python中使用threading.Event协调线程的运行详解
May 02 Python
python实现图像高斯金字塔的示例代码
Dec 11 Python
python Protobuf定义消息类型知识点讲解
Mar 02 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 COOKIE立即生效,不用刷新就可以使用
2011/03/09 PHP
PHP实现图片自动清理的方法
2015/07/08 PHP
JavaScript中的16进制字符(改进)
2011/11/21 Javascript
关于jQuery object and DOM element
2013/04/15 Javascript
JavaScript语言核心数据类型和变量使用介绍
2013/08/23 Javascript
jQuery事件绑定和委托实例
2014/11/25 Javascript
JS是按值传递还是按引用传递
2015/01/30 Javascript
jQuery头像裁剪工具jcrop用法实例(附演示与demo源码下载)
2016/01/22 Javascript
Angularjs中ng-repeat的简单实例
2017/08/25 Javascript
基于jstree使用AJAX请求获取数据形成树
2017/08/29 Javascript
bootstrap treeview 扩展addNode方法动态添加子节点的方法
2017/11/21 Javascript
node.js+express+mySQL+ejs+bootstrop实现网站登录注册功能
2018/01/12 Javascript
微信小程序实现左滑修改、删除功能
2020/10/19 Javascript
微信小程序嵌入腾讯视频源过程详解
2019/08/08 Javascript
[00:44]2016完美“圣”典 风云人物:Mikasa宣传片
2016/12/07 DOTA
Python中数字以及算数运算符的相关使用
2015/10/12 Python
Python双精度浮点数运算并分行显示操作示例
2017/07/21 Python
Python简单生成随机姓名的方法示例
2017/12/27 Python
python画图系列之个性化显示x轴区段文字的实例
2018/12/13 Python
pycharm 实现显示project 选项卡的方法
2019/01/17 Python
Linux下通过python获取本机ip方法示例
2019/09/06 Python
Django继承自带user表并重写的例子
2019/11/18 Python
Python超越函数积分运算以及绘图实现代码
2019/11/20 Python
通过python实现windows桌面截图代码实例
2020/01/17 Python
基于python实现matlab filter函数过程详解
2020/06/08 Python
CSS3实现银灰色动画效果的导航菜单代码
2015/09/01 HTML / CSS
HTML5 video视频字幕的使用和制作方法
2018/05/03 HTML / CSS
KIEHL’S科颜氏官方旗舰店:源自美国的顶级护肤品牌
2018/06/07 全球购物
JSP和EJB可以共享HttpSession么?EJB里面可以改变session里面的内容
2013/06/05 面试题
客户表扬信范文
2014/01/10 职场文书
大四学生思想汇报
2014/01/13 职场文书
委托书模板
2014/04/04 职场文书
社区护士演讲稿
2014/08/27 职场文书
2016年党校科级干部培训班学习心得体会
2016/01/06 职场文书
导游词之泰山玉皇顶
2019/12/23 职场文书
python用字节处理文件实例讲解
2021/04/13 Python