python---学习笔记之序列化反序列化以及pickle模块
来源:互联网 发布:知行供应链 编辑:程序博客网 时间:2024/05/22 00:10
转载:http://blog.csdn.net/abc6368765/article/details/51365838
一、序列化和反序列化的概念
把对象转换为字节序列的过程称为对象的序列化;把字节序列恢复为对象的过程称为对象的反序列化。
对象的序列化主要有两种用途:
1) 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中;
2) 在网络上传送对象的字节序列。
在很多应用中,需要对某些对象进行序列化,让它们离开内存空间,入住物理硬盘,以便长期保存。比如最常见的是Web服务器中的Session对象,当有 10万用户并发访问,就有可能出现10万个Session对象,内存可能吃不消,于是Web容器就会把一些seesion先序列化到硬盘中,等要用了,再把保存在硬盘中的对象还原到内存中。
当两个进程在进行远程通信时,彼此可以发送各种类型的数据。无论是何种类型的数据,都会以二进制序列的形式在网络上传送。发送方需要把这个Java对象转换为字节序列,才能在网络上传送;接收方则需要把字节序列再恢复为Java对象。
二,pickle模块
python数据持久存储:pickle模块的基本使用
python的pickle模块实现了基本的数据序列和反序列化。通过pickle模块的序列化操作我们能够将程序中运行的对象信息保存到文件中去,永久存储;通过pickle模块的反序列化操作,我们能够从文件中创建上一次程序保存的对象。
基本接口:
pickle.dump(obj, file, [,protocol])
注解:将对象obj保存到文件file中去。
protocol为序列化使用的协议版本,0:ASCII协议,所序列化的对象使用可打印的ASCII码表示;1:老式的二进制协议;2:2.3版本引入的新二进制协议,较以前的更高效。其中协议0和1兼容老版本的python。protocol默认值为0。
file:对象保存到的类文件对象。file必须有write()接口, file可以是一个以'w'方式打开的文件或者一个StringIO对象或者其他任何实现write()接口的对象。如果protocol>=1,文件对象需要是二进制模式打开的。
pickle.load(file)
注解:从file中读取一个字符串,并将它重构为原来的python对象。
file:类文件对象,有read()和readline()接口。
A Simple Code
#使用pickle模块将数据对象保存到文件import pickledata1 = {'a': [1, 2.0, 3, 4+6j], 'b': ('string', u'Unicode string'), 'c': None}selfref_list = [1, 2, 3]selfref_list.append(selfref_list)output = open('data.pkl', 'wb')# Pickle dictionary using protocol 0.pickle.dump(data1, output)# Pickle the list using the highest protocol available.pickle.dump(selfref_list, output, -1)output.close()
#使用pickle模块从文件中重构python对象import pprint, picklepkl_file = open('data.pkl', 'rb')data1 = pickle.load(pkl_file)pprint.pprint(data1)data2 = pickle.load(pkl_file)pprint.pprint(data2)pkl_file.close()
- python---学习笔记之序列化反序列化以及pickle模块
- python学习之路(json & pickle 模块 ---序列化,反序列化)
- python pickle模块序列化反序列化---存储对象
- Python模块学习 -- pickle, cPickle 对象序列化/反序列化
- Python模块学习 ---- pickle, cPickle 对象序列化/反序列化
- Python模块学习 ---- pickle, cPickle 对象序列化/反序列化
- Python模块学习 ---- pickle, cPickle 对象序列化/反序列化
- Python模块学习 ---- pickle, cPickle 对象序列化/反序列化
- [代码笔记] python 之 pickle序列化与反序列化
- python 之pickle模块--输出保存到文本(基本的数据序列和反序列化)
- Python 序列化 与 反序列化 JSON 与 pickle 模块
- python类库32[序列化和反序列化之pickle]
- pickle序列化与反序列化
- Python序列化模块pickle
- Python pickle序列化模块
- python pickle模块 序列化
- python学习之路(shelve 模块 ---序列化,反序列化)
- Python中的序列化以及pickle和json模块介绍
- 如何实现更真实的软阴影效果
- spring中ContextLoaderListener和DispatcherServlet区别
- eclipse maven插件方式启动项目
- PHP邮件mail()函数解析和SMTP使用方法及乱码问题
- Eclipse工具Debug详解
- python---学习笔记之序列化反序列化以及pickle模块
- View事件体系学习(一)滑动
- CodeForces 888D Almost Identity Permutations
- 【亲测】centos 7下编译并安装warp-ctc
- 数据结构与算法python版(二)--双向链表
- 【Scikit-Learn 中文文档】内核岭回归
- 配置apache cxf 客户端支持https
- 微信小程序:获取用户权限
- 指针运算、二级指针