从零学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正则表达式re模块详细介绍
May 29 Python
python中ConfigParse模块的用法
Sep 29 Python
Python 实现删除某路径下文件及文件夹的实例讲解
Apr 24 Python
python实现在图片上画特定大小角度矩形框
Oct 24 Python
利用PyCharm Profile分析异步爬虫效率详解
May 08 Python
python里运用私有属性和方法总结
Jul 08 Python
pycharm配置git(图文教程)
Aug 16 Python
python中Ansible模块的Playbook的具体使用
May 28 Python
基于Python词云分析政府工作报告关键词
Jun 02 Python
Matplotlib 绘制饼图解决文字重叠的方法
Jul 24 Python
详解如何在PyCharm控制台中输出彩色文字和背景
Aug 17 Python
python xlwt模块的使用解析
Apr 13 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
PHP中CURL方法curl_setopt()函数的参数分享
2013/01/19 PHP
PHP图片自动裁切应付不同尺寸的显示
2014/10/16 PHP
php自定义函数实现二维数组按指定key排序的方法
2016/09/29 PHP
Thinkphp 框架配置操作之动态配置、扩展配置及批量配置实例分析
2020/05/15 PHP
脚本之家贴图转换+转贴工具用到的js代码超级推荐
2007/04/05 Javascript
js类型检查实现代码
2010/10/29 Javascript
DIY jquery plugin - tabs标签切换实现代码
2010/12/11 Javascript
基于jquery的获取浏览器窗口大小的代码
2011/03/28 Javascript
jsonp原理及使用
2013/10/28 Javascript
JavaScript控制网页层收起和展开效果的方法
2015/04/15 Javascript
jQuery实现仿新浪微博浮动的消息提示框(可智能定位)
2015/10/10 Javascript
jQuery表单验证简单示例
2016/10/17 Javascript
bootstrap table 多选框分页保留示例代码
2017/03/08 Javascript
jquery对table做排序操作的实例演示
2017/08/10 jQuery
ES6中Array.includes()函数的用法
2017/09/20 Javascript
JavaScript实现的仿新浪微博原生态输入字数即时检查功能【兼容IE6】
2017/09/26 Javascript
基于vue-cli npm run build之后vendor.js文件过大的解决方法
2018/09/27 Javascript
Vue实现搜索结果高亮显示关键字
2019/05/28 Javascript
使用Bootstrap做一个朝代历史表
2019/12/10 Javascript
Vue 401配合Vuex防止多次弹框的案例
2020/11/11 Javascript
python使用点操作符访问字典(dict)数据的方法
2015/03/16 Python
python学习之编写查询ip程序
2016/02/27 Python
基于python爬取梨视频实现过程解析
2020/11/09 Python
CSS3使用多列制作瀑布流
2016/05/10 HTML / CSS
CSS3 选择器 基本选择器介绍
2012/01/21 HTML / CSS
Reebok俄罗斯官方网上商店:购买锐步运动服装和鞋子
2016/09/26 全球购物
百思买加拿大:Best Buy Canada
2018/03/20 全球购物
巴西美妆购物网站:Kutiz Beauté
2019/03/13 全球购物
The Athlete’s Foot新西兰:新西兰最大的运动鞋零售商
2019/12/23 全球购物
大学生蛋糕店创业计划书
2014/01/13 职场文书
2014两会优秀的心得体会范文
2014/03/17 职场文书
物资采购方案
2014/06/12 职场文书
优秀大专毕业生求职信
2014/08/04 职场文书
国际会计专业求职信
2014/08/04 职场文书
大学生如何逃脱“毕业季创业队即散伙”魔咒?
2019/08/19 职场文书
Python基础详解之邮件处理
2021/04/28 Python