建议44:理解模块pickle优劣
2015-11-04 14:45
190 查看
# -*- coding:utf-8 -*- ''' pickle 估计是最通用的序列化模块了,它还有个C 语言的实现cPickle,相比pickle 来说 具有较好的性能,其速度大概是pickle 的1000 倍,因此在大多数应用程序中应该优先使用 cPickle(注:cPickle 除了不能被继承之外,它们两者的使用基本上区别不大,除有特殊情况, 本节将不再做具体区分)。pickle 中最主要的两个函数对为dump() 和load(),分别用来进行对 象的序列化和反序列化。 pickle.dump(obj, file[, protocol]) :序列化数据到一个文件描述符(一个打开的文件、 套接字等)。参数obj 表示需要序列化的对象,包括布尔、数字、字符串、字节数组、 None、列表、元组、字典和集合等基本数据类型,此外picike 还能够处理循环,递归 引用对象、类、函数以及类的实例等。参数file 支持write() 方法的文件句柄,可以为 真实的文件,也可以是StringIO 对象等。protocol 为序列化使用的协议版本,0 表示 ASCII 协议,所序列化的对象使用可打印的ASCII 码表示;1 表示老式的二进制协议; 2 表示2.3 版本引入的新二进制协议,比以前的更高效。其中协议0 和1 兼容老版本 的Python。protocol 默认值为0。 load(file):表示把文件中的对象恢复为原来的对象,这个过程也被称为反序列化。 来看一下load() 和dump() 的示例。 ''' import cPickle as pickle my_data = {"name" : "Python", "type" : "Language", "version" : "2.7.5"} fp = open("picklefile.dat", "wb") # 打开要写入的文件 pickle.dump(my_data, fp) # 使用dump 进行序列化 fp.close() fp = open("picklefile.dat", "rb") out = pickle.load(fp) # 反序列化 fp.close() #通用做法如下 with open("picklefile.dat", "rb") as fp: try: lastfileList = pickle.load(fp) except EOFError: print "Load (filename) was failed"%{'filename':'picklefile.dat'}
相关文章推荐
- sql关键字
- 一个简单的空间配置器
- (设计模式)简单工厂模式之通过配置文件动态创建实现类
- Android自定义spinner下拉框实现的实现
- SharePoint 2010 IT Professional--如何创建My Site
- jfinal 调用 存储过程,并将结果返回
- stm32f3的i2c使用小结
- 【东方模拟题】伊吹萃香 分层图最短路
- 出现should be mapped with insert="false" update="false"的解决方法
- C++ primer 学习笔记——向 量
- 實戰案例 - 資料對接工具程式碼重構 (3)
- [环境搭建]-Web Api搭建到IIS服务器后PUT请求返回HTTP Error 405.0 - Method Not Allowed 解决方法 转摘:http://blog.csdn.net/qiujuer/article/details/23827531
- 5.属性
- Android自定义spinner下拉框实现的实现
- 建议41:使用argparse处理命令行参数
- 了解Java泛型
- 使用mmnormalize解析nginx-error日志
- 杭电acm1029
- Python 编码风格指南中译版(Google SOC)
- Redis在游戏服务器中的应用