pickle模块使用的数据格式是python专用的,并且不同版本不向后兼容,同时也不能被其他语言说识别。要和其他语言交互,可以使用内置的json包使用pickle模块你可以把 Python 对象直接保存到文件,而不需要把他们转化为字符串,也不用底层的文件访问操作把它们写入到一个二进制文件里。 pickle模块会创建一个python语言专用的二进制格式,你基本上不用考虑任何文件细节,它会帮你干净利落地完成读写独享操作,唯一需要的只是一个合法的文件句柄。
        pickle模块中的两个主要函数是dump()和load()。dump()函数接受一个文件句柄和一个数据对象作为参数,把数据对象以特定的格式保存到给定的文件中。当我们使用load()函数从文件中取出已保存的对象时,pickle知道如何恢复这些对象到它们本来的格式。

dumps()函数执行和dump() 函数相同的序列化。取代接受流对象并将序列化后的数据保存到磁盘文件,这个函数简单的返回序列化的数据。

loads()函数执行和load() 函数一样的反序列化。取代接受一个流对象并去文件读取序列化后的数据,它接受包含序列化后的数据的str对象, 直接返回的对象。

cPickle是pickle得一个更快得C语言编译版本。

pickle和cPickle相当于java的序列化和反序列化操作
 
#! /usr/local/env python
# -*- coding=utf-8 -*-

if __name__ == "__main__":
    import cPickle

#序列化到文件
    obj = 123,"abcdedf",["ac",123],{"key":"value","key1":"value1"}
    print obj
    #输出:(123, abcdedf, [ac, 123], {key1: value1, key: value})
    #r 读写权限 r b 读写到二进制文件
    f = open(r"d:a.txt","r ")
    cPickle.dump(obj,f)
    f.close()
    f = open(r"d:a.txt")
    print cPickle.load(f)
    #输出:(123, abcdedf, [ac, 123], {key1: value1, key: value})

#序列化到内存(字符串格式保存),然后对象可以以任何方式处理如通过网络传输
    obj1 = cPickle.dumps(obj)
    print type(obj1)
    #输出:<type str>
    print obj1
    #输出:python专用的存储格式
    obj2 = cPickle.loads(obj1)
    print type(obj2)
    #输出:<type tuple>
    print obj2
    #输出:(123, abcdedf, [ac, 123], {key1: value1, key: value})

python核心模块之pickle和cPickle讲解相关推荐

  1. python常用模块:pickle、shelve、json、xml、configparser

    今日内容主要有: 一.pickle模块 二.shelve模块 三.json模块 四.json练习 五.xml模块 六.xml练习 七.configparser模块 一.pickle模块 #pickle ...

  2. Python核心模块——urllib模块

    2019独角兽企业重金招聘Python工程师标准>>> urllib模块中的方法 1.urllib.urlopen(url[,data[,proxies]]) 打开一个url的方法, ...

  3. python3 jason 、pickle 和cpickle

    python JSON JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写.JSON的数据格式其实就是python里面的字典格式,里面可以包含 ...

  4. 面试分析《疯狂Python讲义》PDF代码+《Python核心编程第3版》PDF代码问题

    python语言现在很流行了,除了用在学校,也用在很多行业.python学起来较为简单,语法容易理解,也可用于数据分析. 国内的教材推荐看<疯狂python讲义>,对比国外也有很多好的参考 ...

  5. Python常用模块——目录

    Python常用模块学习 Python模块和包 Python常用模块time & datetime &random 模块 Python常用模块os & sys & sh ...

  6. cpickle支持的python版本_Python序列化模块pickle和cPickle

    Python的序列化是指把变量从内存中变为可以储存/传输的数据/文件的过程. 在Python中叫pickling,在其他语言中也被称之为serialization,marshalling,flatte ...

  7. python中pickle模块_Python pickle模块的用法

    串行化主要用于网络传输或者持久化.我们知道,网络上的数据都是字节流,如果希望将某个对象传送给远端的机器,首先就必须将其转换成字节流,然后才可以在网络上传输.文件也是字节流,如果希望将某个对象保存到文件 ...

  8. python中常用的序列化模块_第六章 常用模块(5):python常用模块(序列化模块:pickle,json,shelve,xml)...

    6.3.7 序列化模块 (pickle,json,shelve,xml) 文件写入,数据传输时,我们都是以字符串形式写入的(因为字符串可以encode成bytes). 那其他类型(比如字典,列表等)想 ...

  9. python模块--json \ pickle \ shelve \ XML模块

    一.json模块 之前学习过的eval内置方法可以将一个字符串转成一个python对象,不过eval方法时有局限性的,对于普通的数据类型,json.loads和eval都能用,但遇到特殊类型的时候,e ...

最新文章

  1. 独家 | 一文读懂Corda分布式记账技术
  2. Python打包EXE神器 pyinstaller
  3. MyBatis 快速入门
  4. 分布式精华问答 | 分布式系统面临哪些挑战?​
  5. php7数据库备份还原,基于thinkphp的数据库在线备份还原
  6. 用户和组 win2003
  7. java学习笔记_2020全网最全Java面试题,学习笔记!
  8. mysql 备份优化_MySQL 备份过程优化
  9. 网络安全实验室CTF—选择题解析 writeup
  10. POE 网络变压器 Pulse 普思
  11. 如何做网站推广?如何提高网站浏览量?
  12. pytest执行报错AttributeError: module ‘allure‘ has no attribute ‘severity_level‘
  13. 重建堆栈指南及其自动化实现
  14. jquery easyui 全部图标
  15. VS2015编译时“ The POSIX name for this item is deprecated.”的分析
  16. 处理Whitelabel Error Page
  17. 在linux系统下暴力破解WiFi密码
  18. Synergy v1.10版本跨平台鼠键共享资源
  19. 如何判断Linux 内核是稳定版本还是测试版本
  20. 「Python条件结构」将两个数从小到大输出

热门文章

  1. asp.net core 实现支持多语言
  2. 定了!10 月 8 日!Jupyter Notebook 原生支持将正式来到 VS Code!
  3. 福爆 | 博客升级 .NET Core 3.0 又踩一坑
  4. .NET Core 的Generic Host 之Generic Host Builder
  5. 【中部武汉】理想离家并不遥远
  6. 在 ASP.NET Core 中安装 MVC
  7. .net core i上 K8S(四).netcore程序的pod管理,重启策略与健康检查
  8. 服务器win2008 R2 x64 部署ASP.net core到IIS 并解决 HTTP Error 502.5 的问题
  9. asp.net core集成CAP(分布式事务总线)
  10. 十二个 ASP.NET Core 例子