建议44:理解模块pickle优劣
# -*- 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'}
建议44:理解模块pickle优劣的更多相关文章
- 编写高质量代码改善C#程序的157个建议——建议44:理解委托中的协变
建议44:理解委托中的协变 委托中的泛型变量天然是部分支持协变的.为什么是“部分支持协变”?看下面示例: class Program { public delegate T GetEmployeeHa ...
- python(31)——【sys模块】【json模块 & pickle模块】
一.sys模块 import sys sys.argv #命令行参数List,第一个元素是程序本身路径 sys.exit() #退出程序,正常退出时exit(0) sys.version #获取pyt ...
- node.js学习(三)简单的node程序&&模块简单使用&&commonJS规范&&深入理解模块原理
一.一个简单的node程序 1.新建一个txt文件 2.修改后缀 修改之后会弹出这个,点击"是" 3.运行test.js 源文件 使用node.js运行之后的. 如果该路径下没有该 ...
- Python进阶(九)----json模块, pickle模块, os模块,sys模块,hashlib模块
Python进阶----json模块, pickle模块, os模块,sys模块,hashlib模块 一丶序列化模块 什么是序列化: 将一种数据结构,转换成一个特殊的序列(特殊字符串,用于网络传输 ...
- sys模块&json模块&pickle模块
sys模块&json模块&pickle模块 sys模块 一.导入方式 import sys 二.作用 与Python解释器交互 三.模块功能 3.1 经常使用 sys.path #返回 ...
- json模块 pickle 模块 collections 模块 openpyxl 模块
json模块 json 模块是一个系列化模块 一个第三方的特殊数据格式 可以将python数据类型----> json 数据格式 ----> 字符串 ----> 文件 其他语言想要使 ...
- Learn day6 模块pickle\json\random\os\zipfile\面对对象(类的封装 操作 __init__)
1.模块 1.1 pickle模块 # ### pickle 序列化模块 import pickle """ 序列化: 把不能够直接存储的数据变得可存储 反序列化: 把数 ...
- Python库:序列化和反序列化模块pickle介绍
1 前言 在“通过简单示例来理解什么是机器学习”这篇文章里提到了pickle库的使用,本文来做进一步的阐述. 通过简单示例来理解什么是机器学习 pickle是python语言的一个标准模块,安装pyt ...
- 模块之 logging模块 time 模块 random模块 sys模块 pickle模块
1.如果执行文件不在项目根目录下,需要添加项目根目录到sys.path中2.调用业务逻辑 2.logging模块 程序日志是 什么时间发生了什么事情,以及当时的情况 不是logging的话 记录日志的 ...
随机推荐
- AtCoder Regular Contest 070 D - No Need 想法:利用单调性二分+bitset优化
/** 题目:D - No Need 链接:http://arc070.contest.atcoder.jp/tasks/arc070_b 题意:给出N个数,从中选出一个子集,若子集和大于等于K,则这 ...
- jvisualvm远程调试
远程服务器端 (1)设置jstatd.all.policy 文件 grant codebase "file:${java.home}/../lib/tools.jar" { per ...
- Hibernate通过many-to-one元素的一对一映射
在hibernate中我们可以通过两种方式来执行一对一映射: 通过many-to-one元素标签 通过one-to-one元素标签 在这里,我们将通过多对一的many-to-one元素进行一对一的映射 ...
- go反射----3方法
声明:文章内容取自雨痕老师<Go语言学习笔记> 动态调用方法,谈不上有多麻烦.只需按IN列表准备好所需参数即可. package main import ( "fmt" ...
- nth-child 和 nth-of-type 的区别
css3中有两个新的选择器可以选择父元素下对应的子元素,一个是:nth-child 另一个是:nth-of-type,它们2个的区别是: nth-of-type为什么要叫:nth-of-type?因为 ...
- Android开发:使用DialogFragment实现dialog自定义布局
使用DialogFragment实现dialog的自定义布局最大的好处是可以更好控制dialog的生命周期. TestFragment的代码: public class TestFragment ex ...
- CodeIgniter 入门教程第一篇:信息发布
一.MVC CodeIgniter 采用MVC架构即:控制层.模型层和视图层. 对应Application下面的文件夹 (图1): 所有新建文件以.php结尾 视图层 view 文件夹放入HTML ...
- 1718 Cos的多项式
1718 Cos的多项式 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 小明对三角函数充满了兴趣,有一天他突然发现一个神奇的性质. 2cos(nx)似乎可以表示成 ...
- jQuery DOM 元素方法(get)
jQuery DOM 元素方法 1..get() 获得由选择器指定的 DOM 元素. $(selector).get(index)index 可选.规定获取哪个匹配元素(通过 index 编号). 实 ...
- 学习 Tornado
异步编程 预习 lambda Lambda functions can be used wherever function objects are required. They are syntact ...