• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >python > Python pickle模块用法实例分析

Python pickle模块用法实例分析

作者: 字体:[增加 减小] 来源:互联网

通过本文主要向大家介绍了python pickle模块,python中的pickle模块,python pickle,python pickle.dump,python pickle.load等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

本文实例讲述了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()

</div>

如果不注释掉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'

</div>

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

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

</div>

上面的代码运行如下:

>>> 
JGood_2
66
132
>>> 

</div>

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

>>> 
JGood_2
66
70
>>> 

</div>

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

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

</div>

您可能想查找下面的文章:

  • 用pickle存储Python的原生对象方法
  • 详解Python之数据序列化(json、pickle、shelve)
  • Python中的数据对象持久化存储模块pickle的使用示例
  • Python pickle模块用法实例分析
  • Python pickle模块用法实例分析
  • Python pickle模块用法实例
  • python持久性管理pickle模块详细介绍
  • Python pickle类库介绍(对象序列化和反序列化)
  • Python 序列化 pickle/cPickle模块使用介绍
  • Python pickle类库介绍(对象序列化和反序列化)

相关文章

  • Python读写Excel文件的实例
  • Python 基础教程之包和类的用法
  • python抓取京东商城手机列表url实例代码
  • Python 'takes exactly 1 argument (2 given)' Python error
  • python函数形参用法实例分析
  • Python使用正则表达式实现文本替换的方法
  • Python ZipFile模块详解
  • python实现红包裂变算法
  • python实现360的字符显示界面
  • python实现在目录中查找指定文件的方法

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • python获取当前时间对应unix时间戳的方法
    • Python 文件读写操作实例详解
    • Windows和Linux下Python输出彩色文字的方法教程
    • python概率计算器实例分析
    • 深入解析Python中的lambda表达式的用法
    • Python 第一步 hello world
    • 在Python中处理日期和时间的基本知识点整理汇总
    • Python操作Excel之xlsx文件
    • Python中的迭代器漫谈
    • Python中基本的日期时间处理的学习教程

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有