从零学python系列之浅谈pickle模块封装和拆封数据对象的方法


Posted in Python onMay 23, 2014

封装是一个将Python数据对象转化为字节流的过程,拆封是封装的逆操作,将字节文件或字节对象中的字节流转化为Python数据对象,不要从不收信任的数据源中拆封数据。可以封装和拆封几乎任何Python数据对象,主要包括:

    None , True,False
    整数,浮点数,复数
    字符串,字节,ByteArray对象
    元组,列表,集合,包含可封装对象的字典
    在一个模块的顶层定义的函数
    在一个模块的顶层定义的内置函数
    那是在一个模块的顶层定义的类
    __dict__或调用__getstate__()的结果是可封装的类的实例

 pickle模块中常用的方法有:

    1. pickle.dump(obj, file, protocol=None,)

    必填参数obj表示将要封装的对象

    必填参数file表示obj要写入的文件对象,file必须以二进制可写模式打开,即“wb”

    可选参数protocol表示告知pickler使用的协议,支持的协议有0,1,2,3,默认的协议是添加在Python 3中的协议3,     其他的协议详情见参考文档

    2. pickle.load(file,*,fix_imports=True, encoding="ASCII", errors="strict")

    必填参数file必须以二进制可读模式打开,即“rb”,其他都为可选参数

    3. pickle.dumps(obj):以字节对象形式返回封装的对象,不需要写入文件中

    4. pickle.loads(bytes_object): 从字节对象中读取被封装的对象,并返回

 pickle模块可能出现三种异常:

    1. PickleError:封装和拆封时出现的异常类,继承自Exception

    2. PicklingError: 遇到不可封装的对象时出现的异常,继承自PickleError

    3. UnPicklingError: 拆封对象过程中出现的异常,继承自PickleError

 pickle应用实例:

import pickle  
with open("my_profile.txt", "wb") as myprofile:  
    pickle.dump({"name":"AlwaysJane", "age":"20+", "sex":"female"}, myprofile)
with open("my_profile.txt", "rb") as get_myprofile:
    print (pickle.load(get_myprofile))
import pickle 
class Profile:
    name = "AlwaysJane"
pickledclass = pickle.dumps(Profile)
print (pickledclass)
print (pickle.loads(pickledclass))

理解不是很透彻,希望大神们指正错误。。。

附上参考文档

Python 相关文章推荐
举例讲解Python程序与系统shell交互的方式
Apr 09 Python
python用reduce和map把字符串转为数字的方法
Dec 19 Python
python3.7.0的安装步骤
Aug 27 Python
对python周期性定时器的示例详解
Feb 19 Python
python列表,字典,元组简单用法示例
Jul 11 Python
使用Python快乐学数学Github万星神器Manim简介
Aug 07 Python
python使用配置文件过程详解
Dec 28 Python
Django密码存储策略分析
Jan 09 Python
pytorch实现查看当前学习率
Jun 24 Python
详解如何修改python中字典的键和值
Sep 29 Python
python中uuid模块实例浅析
Dec 29 Python
刚学完怎么用Python实现定时任务,转头就跑去撩妹!
Jun 05 Python
从零学python系列之新版本导入httplib模块报ImportError解决方案
May 23 #Python
从零学python系列之数据处理编程实例(二)
May 22 #Python
从零学python系列之数据处理编程实例(一)
May 22 #Python
Python学习笔记_数据排序方法
May 22 #Python
从零学Python之hello world
May 21 #Python
Python开发实例分享bt种子爬虫程序和种子解析
May 21 #Python
从零学Python之引用和类属性的初步理解
May 15 #Python
You might like
ThinkPHP框架使用redirect实现页面重定向的方法实例分析
2018/04/12 PHP
判断用户的在线状态 onbeforeunload事件
2011/03/05 Javascript
JavaScript 垃圾回收机制分析
2013/10/10 Javascript
iframe的onreadystatechange事件在firefox下的使用
2014/04/16 Javascript
JQuery动画与特效实例分析
2015/02/02 Javascript
JS实现CheckBox复选框全选全不选功能
2015/05/06 Javascript
jQuery实现响应鼠标滚动的动感菜单效果
2015/09/21 Javascript
jquery实现右侧栏菜单选择操作
2016/03/04 Javascript
Javascript中的arguments对象
2016/06/20 Javascript
BootStrap Progressbar 实现大文件上传的进度条的实例代码
2016/06/27 Javascript
JS中BOM相关知识点总结(必看篇)
2016/11/22 Javascript
详解Vue使用 vue-cli 搭建项目
2017/04/20 Javascript
javascript ES6 新增了let命令使用介绍
2017/07/07 Javascript
Vue中实现权限控制的方法示例
2019/06/07 Javascript
在vue中使用vuex,修改state的值示例
2019/11/08 Javascript
vue打开新窗口并实现传参的图文实例
2021/03/04 Vue.js
[56:18]VGJ.S vs Secret 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python的面向对象编程方式学习笔记
2016/07/12 Python
浅谈python中列表、字符串、字典的常用操作
2017/09/19 Python
pandas删除指定行详解
2019/04/04 Python
Python何时应该使用Lambda函数
2019/07/02 Python
在pycharm中显示python画的图方法
2019/08/31 Python
python将dict中的unicode打印成中文实例
2020/05/11 Python
python实现取余操作的简单实例
2020/08/16 Python
Python爬虫之Selenium设置元素等待的方法
2020/12/04 Python
匡威俄罗斯官网:Converse俄罗斯
2020/05/09 全球购物
考博自荐信
2013/10/25 职场文书
大学生求职信范文应怎么写
2014/01/01 职场文书
毕业生自荐信格式
2014/03/07 职场文书
金融管理专业毕业生求职信
2014/03/12 职场文书
安全生产管理责任书
2014/04/16 职场文书
港澳通行证委托书怎么写
2014/08/02 职场文书
上班时间打瞌睡检讨书
2014/09/26 职场文书
销售代理协议书
2014/09/30 职场文书
赢在执行观后感
2015/06/16 职场文书
一道JS算法面试题——冒泡、选择排序
2021/04/21 Javascript