pickle, cpickle模块,用于序列化和反序列化 python 对象数据,可以被序列化的有:布尔值,数值,字符串,包含以上三类的容器,定义在模块顶层的函数、内置函数和类,实例对象的 __dict__ 或是定义了 __getstate__()。后面两类在 pickle 的时候不会序列化他们的值和代码,而是他们名字的引用,所以在反序列化的时候,定义他们的模块需要被导入。所以这个模块可以用于网络通信,也可以用于保存数据,但用于网络通信时不要反序列化一个不明来源的数据,不安全。cpickle 和 pickle 的区别就在于前者是用 c 实现的,更快,同时pickler 和 unickler 是以函数形式存在,不以类形式存在。

模块方法:

pickle.dump(obj, file[, protocol]):把 obj 序列化到打开的文件 file 中,protocol 为 0,代表用 ASCII 协议,以 ASCII 文本保存,protocol 为 1,代表用老的二进制格式保存,protocol 为 2 或负数,代表用二进制格式保存,效率更高
pickle.load(file):反序列化文件 file 中的数据,恢复原来的格式
pickle.dumps(obj[, protocol]):以字符串形式序列化 obj,不写入文件
pickle.loads(string):反序列化 string

模块的类:

1、Pickler(file[, protocol]):用于序列化对象至文件 file 中

dump(obj):把 obj 对象序列化
  clear_memo():清楚缓存,缓存可以使那些被共享或是递归的对象被正确序列化

2、Unpickler(file):用于反序列化文件 file 里的数据

load():反序列化,重新构建数据结构
  noload():反序列化,但不创建任何对象

注:对于低端用户,dump 和 load 保存读取数据就够用了。高端用户需要知道怎么写类的 __getstate__() 和 __setstate__(state) 方法, persistent_load() 方法等

Python2.7-pickle, cpickle的更多相关文章

  1. Python 序列化 pickle/cPickle模块

    Python 序列化 pickle/cPickle模块 2013-10-17 Posted by yeho Python序列化的概念很简单.内存里面有一个数据结构,你希望将它保存下来,重用,或者发送给 ...

  2. python 标准库 -- pickle & cPickle

    pickle & cPickle pickle 和 cPickle 除了导入名称不一样之外, 使用方法, 均一样. pickle 导入 import pickle cPickle 导入 imp ...

  3. python序列化pickle/cPickle

    一.pickle/Cpickle简介 Python序列化的概念很简单.内存里面有一个数据结构,你希望将它保存下来,重用,或者发送给其他人.你会怎么做?这取决于你想要怎么保存,怎么重用,发送给谁.很多游 ...

  4. pickle & cPickle ValueError: unsupported pickle protocol: 3

    pickle and cPickle pickle和cPickle是python对象的转储文件,保存的是python对象 他们分别是python2和python3的对应部分,建议引入的时候采用以下方法 ...

  5. Python 序列化pickle/cPickle模块整理

    Python序列化的概念很简单.内存里面有一个数据结构,你希望将它保存下来,重用,或者发送给其他人.你会怎么做?这取决于你想要怎么保存,怎么重用,发送给谁.很多游戏允许你在退出的时候保存进度,然后你再 ...

  6. python pickle/cPickle模块

    序列化(picking): 把变量从内存中变成可存储或传输的过程称为序列化,序列化之后,就可以把序列化的对象写入磁盘,或者传输给其他设备; 反序列化(unpickling):相应的,把变量的内容从序列 ...

  7. python2,socket多进程的错误pickle.PicklingError: Can't pickle

    python2,socket多进程的错误pickle.PicklingError: Can't pickle 源码: #coding:utf-8 import socket import pickle ...

  8. python pickle模块的使用/将python数据对象序列化保存到文件中

    # Python 使用pickle/cPickle模块进行数据的序列化 """Python序列化的概念很简单.内存里面有一个数据结构, 你希望将它保存下来,重用,或者发送 ...

  9. Python笔记(1)变量与表达式

    列表list list是用的最多的类型 可以count计数 可嵌套,多钟类型并存 支持 + * a = [1,2,3] a_ref = a a_copy = a[:] 引用,a变化a_ref也变化 指 ...

随机推荐

  1. 漫画 | Java多线程与并发(一)

    1.什么是线程? 2.线程和进程有什么区别? 3.如何在Java中实现线程? 4.Java关键字volatile与synchronized作用与区别? volatile修饰的变量不保留拷贝,直接访问主 ...

  2. Springboot — 用更优雅的方式发HTTP请求(RestTemplate详解)

    RestTemplate是Spring提供的用于访问Rest服务的客户端,RestTemplate提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的编写效率. 我之前的HTTP开发是用ap ...

  3. OSGI企业应用开发(一)OSGI简介

    一.OSGI简介 OSGI全称为Open Service Gateway Initiative(开放服务网关规范),有两个层面的含义,一方面它指OSGi Alliance组织:另一方面指该组织制定的一 ...

  4. Nginx的location剖析

    1.location的作用: location指令的作用是根据用户的请求的URL来执行不同的应用 2.location的语法: location [ = | ~ | ~* | ^~ ] uri { . ...

  5. MariaDB MariaDB、MySQL存储过程、游标基础应用举例说明

    MariaDB.MySQL存储过程.游标基础应用举例说明 by:授客 QQ:1033553122 测试环境: MariaDB-10.0.19-centos7-x86_64 实践操作: # 创建测试数据 ...

  6. selector设置按钮或者一些点击控件在点击时的效果

    <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="ht ...

  7. Android热修复之 - 收集崩溃信息上传服务器

    1.概述 大致的流程就是在用户崩溃的时候,我们获取崩溃信息.应用当前的信息和手机信息,然后把它保存到手机内存卡,再找我就直接找出来看看.后来衍生到上线后某些奇葩机型会有部分问题,所以不得不上传到服务器 ...

  8. WiFi 统一管理以及设备自动化测试实践

    ATX 安卓设备 WiFi 统一管理以及设备自动化测试实践 (零散知识梳理总结) 此文为转载,感谢作者  目录  众所周知,安卓单台设备的UI自动化测试已经比较完善了,有数不清的自动化框架或者工具.但 ...

  9. Java IO流学习总结一:输入输出流

    Java IO流学习总结一:输入输出流 转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/54292148 本文出自[赵彦军的博客] J ...

  10. 解决在IDEA 的Maven下 出现 Cannot access in offline mode 问题

    去掉maven前面的work offline模式