从零学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中引用与复制用法实例分析
Jun 04 Python
Python中防止sql注入的方法详解
Feb 25 Python
Python利用BeautifulSoup解析Html的方法示例
Jul 30 Python
Python排序搜索基本算法之冒泡排序实例分析
Dec 09 Python
解决python3读取Python2存储的pickle文件问题
Oct 25 Python
设置python3为默认python的方法
Oct 31 Python
用Python编写一个简单的CS架构后门的方法
Nov 20 Python
python如何将多个PDF进行合并
Aug 13 Python
python简单实现9宫格图片实例
Sep 03 Python
Python实现快速大文件比较代码解析
Sep 04 Python
Python控制鼠标键盘代码实例
Dec 08 Python
python实现剪贴板的操作
Jul 01 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函数
2006/10/09 PHP
采用memcache在web集群中实现session的同步会话
2014/07/05 PHP
php结合正则获取字符串中数字
2015/06/19 PHP
php opendir()列出目录下所有文件的实例代码
2016/10/02 PHP
php实现文章置顶功能的方法
2016/10/20 PHP
php基于dom实现读取图书xml格式数据的方法
2017/02/03 PHP
javascript+xml技术实现分页浏览
2008/07/27 Javascript
Javascript中的String对象详谈
2014/03/03 Javascript
基于jQuery实现的向下滑动二级菜单效果代码
2015/08/31 Javascript
jquery实现初次打开有动画效果的网页TAB切换代码
2015/09/06 Javascript
Bootstrap教程JS插件弹出框学习笔记分享
2016/05/17 Javascript
JSON字符串和对象相互转换实例分析
2016/06/16 Javascript
JS前端开发判断是否是手机端并跳转操作(小结)
2017/02/05 Javascript
JS将unicode码转中文方法
2017/05/08 Javascript
bootstrap表单示例代码分享
2017/05/18 Javascript
微信小程序的分类页面制作
2017/06/27 Javascript
Angular2学习笔记之数据绑定的示例代码
2018/01/03 Javascript
JS中的一些常用的函数式编程术语
2019/06/15 Javascript
详解利用eventemitter2实现Vue组件通信
2019/11/04 Javascript
微信小程序实现电子签名并导出图片
2020/05/27 Javascript
js实现点击上传图片并设为模糊背景
2020/08/02 Javascript
[51:27]LGD vs Liquid 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/19 DOTA
处理Python中的URLError异常的方法
2015/04/30 Python
python 创建弹出式菜单的实现代码
2017/07/11 Python
Python模块搜索路径代码详解
2018/01/29 Python
python使用beautifulsoup4爬取酷狗音乐代码实例
2019/12/04 Python
pd.DataFrame统计各列数值多少的实例
2019/12/05 Python
新手常见Python错误及异常解决处理方案
2020/06/18 Python
Python提取视频中图片的示例(按帧、按秒)
2020/10/22 Python
使用bandit对目标python代码进行安全函数扫描的案例分析
2021/01/27 Python
CSS3实现千变万化的文字阴影text-shadow效果设计
2016/04/26 HTML / CSS
美国成衣女装品牌:CHICO’S
2016/09/19 全球购物
Abbott Lyon官网:女士手表、珠宝及配件
2020/12/26 全球购物
父亲生日宴会答谢词
2014/01/10 职场文书
五分钟演讲稿
2014/04/30 职场文书
Python读写yaml文件
2022/03/20 Python