# -*-  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优劣的更多相关文章

  1. 编写高质量代码改善C#程序的157个建议——建议44:理解委托中的协变

    建议44:理解委托中的协变 委托中的泛型变量天然是部分支持协变的.为什么是“部分支持协变”?看下面示例: class Program { public delegate T GetEmployeeHa ...

  2. python(31)——【sys模块】【json模块 & pickle模块】

    一.sys模块 import sys sys.argv #命令行参数List,第一个元素是程序本身路径 sys.exit() #退出程序,正常退出时exit(0) sys.version #获取pyt ...

  3. node.js学习(三)简单的node程序&&模块简单使用&&commonJS规范&&深入理解模块原理

    一.一个简单的node程序 1.新建一个txt文件 2.修改后缀 修改之后会弹出这个,点击"是" 3.运行test.js 源文件 使用node.js运行之后的. 如果该路径下没有该 ...

  4. Python进阶(九)----json模块, pickle模块, os模块,sys模块,hashlib模块

    Python进阶----json模块, pickle模块, os模块,sys模块,hashlib模块 一丶序列化模块 什么是序列化: ​ 将一种数据结构,转换成一个特殊的序列(特殊字符串,用于网络传输 ...

  5. sys模块&json模块&pickle模块

    sys模块&json模块&pickle模块 sys模块 一.导入方式 import sys 二.作用 与Python解释器交互 三.模块功能 3.1 经常使用 sys.path #返回 ...

  6. json模块 pickle 模块 collections 模块 openpyxl 模块

    json模块 json 模块是一个系列化模块 一个第三方的特殊数据格式 可以将python数据类型----> json 数据格式 ----> 字符串 ----> 文件 其他语言想要使 ...

  7. Learn day6 模块pickle\json\random\os\zipfile\面对对象(类的封装 操作 __init__)

    1.模块 1.1 pickle模块 # ### pickle 序列化模块 import pickle """ 序列化: 把不能够直接存储的数据变得可存储 反序列化: 把数 ...

  8. Python库:序列化和反序列化模块pickle介绍

    1 前言 在“通过简单示例来理解什么是机器学习”这篇文章里提到了pickle库的使用,本文来做进一步的阐述. 通过简单示例来理解什么是机器学习 pickle是python语言的一个标准模块,安装pyt ...

  9. 模块之 logging模块 time 模块 random模块 sys模块 pickle模块

    1.如果执行文件不在项目根目录下,需要添加项目根目录到sys.path中2.调用业务逻辑 2.logging模块 程序日志是 什么时间发生了什么事情,以及当时的情况 不是logging的话 记录日志的 ...

随机推荐

  1. Spring MVC复选框(多项)

    以下示例显示如何在使用Spring Web MVC框架的表单中使用多个复选框(Checkbox).首先使用Eclipse IDE来创建一个WEB工程,并按照以下步骤使用Spring Web Frame ...

  2. java微信开发API解析(四)-自己定义菜单以及个性化菜单实现

    全局说明 * 具体说明请參考前两篇文章. 本文说明 *本文分为五部分: * 工具类AccessTokenUtils的封装 * 自己定义菜单和个性化菜单文档的阅读解析 * 菜单JSON的分析以及构建相应 ...

  3. 【网络优化|渣速必看】合理设置MTU,提升网络速度

    可能很少网友注意过“本机.网络”的“MTU”值对自己网络性能产生的影响.对于追求更快的下载速度来说,MTU值设置不当,就仿佛穿着高跟鞋跑步一般. MTU是什么? “MTU=最大传输单元 单位:字节” ...

  4. JS探秘——那些你理解存在偏差的问题

    Javascript的连续赋值运算 var a = {n:1}; a.x = a = {n:2}; alert(a.x); // --> undefined 看 jQuery 源码 时发现的这种 ...

  5. hoj 2739 中国邮局问题

    /*若原图的基图不连通, 或者存在某个点的入度或出度为 0 则无解. 统计所有点的入度出度之差 Di, 对于 Di > 0 的点, 加边(s, i, Di, 0); 对于 Di < 0 的 ...

  6. 爬虫实战【6】Ajax内容解析-今日头条图集

    Ajax技术 AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML). Ajax并不是新的编程语言,而是一种使用现有标准的新方法,当然 ...

  7. set集合可以添加重复元素

    set集合判断元素的唯一性要重写hashcode和equals方法,这样就能保证不会加入重复的元素, 但是在以下这种情况下任然可以加入重复元素,即使他们的hashcode和equals方法结果相同 p ...

  8. Grafana----Table Panel

    新的表面板非常灵活,既支持时间序列的多模式,也支持表.注释和原始JSON数据.它还提供日期格式化和值格式化和着色选项.要查看表板动作和测试不同的配置数据,查看台面板展示在grafana操场. Opti ...

  9. Security Report: Stop using relative path to import CSS files

    Detecting and exploiting path-relative stylesheet import (PRSSI) vulnerabilities   Early last year G ...

  10. Linux中的位置参数变量

    解释: 主要是向脚本中传递数据,变量名不能自定义,变量作用是固定的 $n $0代表命令本身,$1-9代表接受的第1-9个参数,10以上需要用{}括起来,比如${10}代表接收的第10个参数 $* 代表 ...