从零学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实现根据用户输入从电影网站获取影片信息的方法
Apr 07 Python
Python HTMLParser模块解析html获取url实例
Apr 08 Python
python简单获取本机计算机名和IP地址的方法
Jun 03 Python
在CentOS上配置Nginx+Gunicorn+Python+Flask环境的教程
Jun 07 Python
python 2.7.14安装图文教程
Apr 08 Python
Python 字符串与二进制串的相互转换示例
Jul 23 Python
在python环境下运用kafka对数据进行实时传输的方法
Dec 27 Python
python3实现字符串操作的实例代码
Apr 16 Python
django数据模型on_delete, db_constraint的使用详解
Dec 24 Python
教你如何用python操作摄像头以及对视频流的处理
Oct 12 Python
利用Python判断整数是否是回文数的3种方法总结
Jul 07 Python
Python读取和写入Excel数据
Apr 20 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
调整优化您的LAMP应用程序的5种简单方法
2011/06/26 PHP
php+MySQL判断update语句是否执行成功的方法
2014/08/28 PHP
PHP的伪随机数与真随机数详解
2015/05/27 PHP
jQuery 1.2.x 升? 1.3.x 注意事项
2009/05/06 Javascript
Javascript new Date().valueOf()的作用与时间戳由来详解
2013/04/24 Javascript
js二级地域选择的实现方法
2013/06/17 Javascript
jQuery 追加元素的方法如append、prepend、before
2014/01/16 Javascript
js登录弹出层特效
2014/03/07 Javascript
选择复选框按钮置灰否则按钮可用
2014/05/22 Javascript
jQuery插件form-validation-engine正则表达式操作示例
2017/02/09 Javascript
深入理解Nodejs Global 模块
2017/06/03 NodeJs
Vue axios 中提交表单数据(含上传文件)
2017/07/06 Javascript
一文读懂ES7中的javascript修饰器
2019/05/06 Javascript
自定义javascript验证框架示例【附源码下载】
2019/05/31 Javascript
基于JS实现父组件的请求服务过程解析
2019/10/14 Javascript
layui 解决form表单点击无反应的问题
2019/10/25 Javascript
Vue实现商品飞入购物车效果(电商项目)
2019/11/26 Javascript
js实现贪吃蛇游戏(简易版)
2020/09/29 Javascript
详解python并发获取snmp信息及性能测试
2017/03/27 Python
Python SMTP发送邮件遇到的一些问题及解决办法
2018/10/24 Python
Python 实现取多维数组第n维的前几位
2019/11/26 Python
python模拟哔哩哔哩滑块登入验证的实现
2020/04/24 Python
初学者学习Python好还是Java好
2020/05/26 Python
Python3压缩和解压缩实现代码
2021/03/01 Python
HTML5 video 事件应用示例
2014/09/11 HTML / CSS
Electrolux伊莱克斯巴西商店:家用电器、小家电和配件
2018/05/23 全球购物
New Balance法国官方网站:购买鞋子和服装
2019/09/01 全球购物
有机婴儿毛毯和衣服:Monica + Andy
2020/03/01 全球购物
本科毕业生求职自荐信
2014/02/03 职场文书
幼儿园毕业教师感言
2014/02/21 职场文书
大三学生学年自我鉴定
2014/09/12 职场文书
2014小学年度工作总结
2014/12/20 职场文书
青岛导游词
2015/02/12 职场文书
三八妇女节慰问信
2015/02/14 职场文书
六一儿童节致辞稿(3篇)
2019/07/11 职场文书
python基于tkinter制作m3u8视频下载工具
2021/04/24 Python