建议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的话 记录日志的 ...
随机推荐
- Spring MVC复选框(多项)
以下示例显示如何在使用Spring Web MVC框架的表单中使用多个复选框(Checkbox).首先使用Eclipse IDE来创建一个WEB工程,并按照以下步骤使用Spring Web Frame ...
- java微信开发API解析(四)-自己定义菜单以及个性化菜单实现
全局说明 * 具体说明请參考前两篇文章. 本文说明 *本文分为五部分: * 工具类AccessTokenUtils的封装 * 自己定义菜单和个性化菜单文档的阅读解析 * 菜单JSON的分析以及构建相应 ...
- 【网络优化|渣速必看】合理设置MTU,提升网络速度
可能很少网友注意过“本机.网络”的“MTU”值对自己网络性能产生的影响.对于追求更快的下载速度来说,MTU值设置不当,就仿佛穿着高跟鞋跑步一般. MTU是什么? “MTU=最大传输单元 单位:字节” ...
- JS探秘——那些你理解存在偏差的问题
Javascript的连续赋值运算 var a = {n:1}; a.x = a = {n:2}; alert(a.x); // --> undefined 看 jQuery 源码 时发现的这种 ...
- hoj 2739 中国邮局问题
/*若原图的基图不连通, 或者存在某个点的入度或出度为 0 则无解. 统计所有点的入度出度之差 Di, 对于 Di > 0 的点, 加边(s, i, Di, 0); 对于 Di < 0 的 ...
- 爬虫实战【6】Ajax内容解析-今日头条图集
Ajax技术 AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML). Ajax并不是新的编程语言,而是一种使用现有标准的新方法,当然 ...
- set集合可以添加重复元素
set集合判断元素的唯一性要重写hashcode和equals方法,这样就能保证不会加入重复的元素, 但是在以下这种情况下任然可以加入重复元素,即使他们的hashcode和equals方法结果相同 p ...
- Grafana----Table Panel
新的表面板非常灵活,既支持时间序列的多模式,也支持表.注释和原始JSON数据.它还提供日期格式化和值格式化和着色选项.要查看表板动作和测试不同的配置数据,查看台面板展示在grafana操场. Opti ...
- Security Report: Stop using relative path to import CSS files
Detecting and exploiting path-relative stylesheet import (PRSSI) vulnerabilities Early last year G ...
- Linux中的位置参数变量
解释: 主要是向脚本中传递数据,变量名不能自定义,变量作用是固定的 $n $0代表命令本身,$1-9代表接受的第1-9个参数,10以上需要用{}括起来,比如${10}代表接收的第10个参数 $* 代表 ...