封装是一个将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))
 

pickle.dump()的更多相关文章

  1. [Head First Python]4. pickle.dump pickle.load

    sketch.py #--*-- coding:utf-8 --*-- import pickle import nester man = [] other = [] try: data = open ...

  2. Python3基础 pickle.dump和load 对一个对象进行序列化存储及读取

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...

  3. pickle.dump()和pickle.load()

    python的pickle模块实现了基本的数据序列和反序列化. 通过pickle模块的序列化操作我们能够将程序中运行的对象信息保存到文件中去,永久存储: 通过pickle模块的反序列化操作,我们能够从 ...

  4. 9. 获得图片路径,构造出训练集和验证集,同时构造出相同人脸和不同人脸的测试集,将结果存储为.csv格式 1.random.shuffle(数据清洗) 2.random.sample(从数据集中随机选取2个数据) 3. random.choice(从数据集中抽取一个数据) 4.pickle.dump(将数据集写成.pkl数据)

    1. random.shuffle(dataset) 对数据进行清洗操作 参数说明:dataset表示输入的数据 2.random.sample(dataset, 2) 从dataset数据集中选取2 ...

  5. python2 pickle.dump生成的文件,python3 pickle.load怎么加载

    会报错: UnicodeDecodeError: 'ascii' codec can't decode byte 0xa0 in position 3: ordinal not in range(12 ...

  6. Python中Pickle模块的dump()方法和load()方法

    Python中的Pickle模块实现了基本的数据序列与反序列化. 经常遇到在Python程序运行中得到了一些字符串.列表.字典等数据,想要长久的保存下来,方便以后使用,而不是简单的放入内存中关机断电就 ...

  7. python常用模块(模块和包的解释,time模块,sys模块,random模块,os模块,json和pickle序列化模块)

    1.1模块 什么是模块: 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文 ...

  8. python模块(json和pickle模块)

    json和pickle模块,两个都是用于序列化的模块 • json模块,用于字符串与python数据类型之间的转换 • pickle模块,用于python特有类型与python数据类型之间的转换 两个 ...

  9. python3的pickle导致乱码

    资料: http://www.cnblogs.com/pzxbc/archive/2012/03/18/2404715.html http://bbs.chinaunix.net/thread-419 ...

随机推荐

  1. 分析Java因为语言慢

    Java在早期的(例JDK1.2一旦)这是很慢.也许是因为有很多的优化,以提高装置的版本号,Java这是越来越快,所以这是现在非常的Java和C/C++什么什么慢速争议. 我想我自己的理解.谈论的影响 ...

  2. c#自带压缩类实现数据库表导出到CSV压缩文件

    c#自带压缩类实现数据库表导出到CSV压缩文件的方法 在导出大量CSV数据的时候,常常体积较大,采用C#自带的压缩类,可以方便的实现该功能,并且压缩比例很高,该方法在我的开源工具DataPie中已经经 ...

  3. Working with Entity Relations in OData

    Working with Entity Relations in OData 前言 阅读本文之前,您也可以到Asp.Net Web API 2 系列导航进行查看 http://www.cnblogs. ...

  4. Binder机制,从Java到C (6. Binder in Native : libbinder)

    1.Java和C++中的Binder 从前一篇 Binder机制,从Java到C (5. IBinder对象传递形式) 中可以看到,使用Binder的Java代码,到最后都会进入到Native环境,将 ...

  5. APNs功能之Node.js和Mysql应用总结

    APNs功能之Node.js和Mysql应用总结 这篇文档主要是总结Node.js和Mysql的学习心得体会.当然也可以看作是此前所写的消息推送服务的续篇. 简单描述下应用背景,我们的应用需要实现苹果 ...

  6. ASP.NET MVC 使用MSBuild部署的几个注意事项

    ASP.NET MVC 使用MSBuild部署的几个注意事项 做新项目,当时参考NopCommerce的结构,后台Nop.Admin是一个独立的Area Web Site,但部署的时候发现,使用一键发 ...

  7. ASP.NET MVC实现剪切板功能

    前言 关于复制粘贴的功能,好像不用劳师动众的写后端代码,JS就可以,但正如大家所知道的,兼容性问题,当然这么通用的功能怎么可能没有一个通用的方案呢,于是便找到了一款jquery插件 jquery.cl ...

  8. [转]JavaScriptCore and iOS 7

    原文:http://www.bignerdranch.com/blog/javascriptcore-and-ios-7/ As a rule, iOS programmers don't think ...

  9. 企业架构研究总结(30)——TOGAF架构内容框架之内容元模型(上)

    2. 内容元模型(Content Metamodel) 在TOGAF的眼中,企业架构是以一系列架构构建块为基础的,并将目录.矩阵和图形作为其具体展现方式.如果我们把这些表述方式看作为构建块的语法,那么 ...

  10. js call方法

    js call call 方法 请参阅 应用于:Function 对象 要求 版本 5.5 调用一个对象的一个方法,以另一个对象替换当前对象. call([thisObj[,arg1[, arg2[, ...