`
desert3
  • 浏览: 2159492 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

python核心模块pickle和cPickle

阅读更多

    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模块使用介绍

    Python序列化的概念很简单...Python标准库提供pickle和cPickle模块。cPickle是用C编码的,在运行效率上比pickle要高,但是cPickle模块中定义的类型不能被继承(其实大多数时候,我们不需要从这些类型中继承,推荐使用c

    详解Python3 pickle模块用法

    pickle(python3.x)和cPickle(python2.x的模块)相当于java的序列化和反序列化操作。 常采用下面的方式使用: import pickle pickle.dump(obj,f) pickle.dumps(obj,f) pickle.load(f) pickle.loads(f) 使用pickle模块...

    python模块详解

    python模块详解 各个模块的详解 核心模块 1.1. 介绍 1.2. _ _builtin_ _ 模块 1.3. exceptions 模块 1.4. os 模块 1.5. os.path 模块 1.6. stat 模块 1.7. string 模块 1.8. re 模块 1.9. math 模块 1.10....

    《自学Python:编程基础、科学计算及数据分析》读书笔记模板.pptx

    * 序列化Python对象:pickle、cPickle模块 * 读写JSON数据:json模块 * 文件模式匹配:glob模块 章节5:Python科学计算基础:NumPy模块 * NumPy模块简介 * 数组基础 * 数组操作 * 数组广播机制 * 数组索引进阶 * ...

    Python标准库中文版.pdf

    marshal、pickle、cPickle模块用于对象的序列化和反序列化。copy_reg、pprint、repr、base64、binhex、quopri、uu、binascii模块则提供了对数据进行编码和转换的功能。 文件格式处理涉及到xmllib、xml.parsers....

    Python中的数据对象持久化存储模块pickle的使用示例

    Python中可以使用 pickle 模块将对象转化为文件保存在磁盘上,在需要的时候再读取并还原。具体用法如下: pickle是Python库中常用的序列化工具,可以将内存对象以文本或二进制格式导出为字符串,或者写入文档。后续...

    python标准库介绍

    Python标准库是Python语言的一个重要组成部分,它包含了多个模块,每个模块都针对不同的功能提供了接口和工具,从而极大地方便了Python的使用和扩展。描述中提到本书对每个模块至少提供了一个例子来说明如何使用,整...

    python标准库

    数据表示部分涉及了如何表示和处理各种数据类型,例如通过array、struct、xdrlib、marshal、pickle、cPickle、copy_reg、pprint、repr、base64、binhex、quopri、uu和binascii模块实现二进制数据与Python数据结构...

    python标准库中文版PDF

    - pickle和cPickle模块:对象的序列化和反序列化。 第5章讲解文件格式处理,如: - xmllib模块:XML解析器。 - expat模块:一个XML解析库的接口。 - sgmllib模块:SGML解析器。 - htmllib和formatter模块:HTML文档...

    python中cPickle类使用方法详解

    Python中的cPickle模块是pickle模块的一个C语言实现版本,提供了更快的性能。pickle模块用于序列化和反序列化Python对象,使得数据可以保存到文件或从文件中恢复。cPickle提供了与pickle相似的功能,但速度更快,...

    python标准库-书籍,原版-高清可复制

    - pickle和cPickle模块:提供对象序列化和反序列化的功能。 - copy_reg模块:用于注册pickle操作的额外信息。 - pprint和repr模块:提供对象的美化打印。 - base64、binhex、quopri和uu模块:用于数据的编码和解码。...

    python标准库,带标签

    pickle模块及其cPickle模块实现了Python对象的序列化和反序列化,使得对象可以在不同的Python程序间传输和持久化存储。 文件格式模块涉及了对各种文件格式的解析与处理,比如xmllib模块用于解析XML格式的数据;...

    python使用cPickle模块序列化实例

    本文实例讲述了python使用cPickle模块序列化的方法,分享给大家供大家参考。 具体方法如下: import cPickle data1 = ['abc',12,23] #几个测试数据 data2 = {1:'aaa',"b":'dad'} data3 = (1,2,4) output_file = ...

    详解Python中的序列化与反序列化的使用

    学习过marshal模块用于序列化和反序列化,但marshal的功能比较薄弱,只支持部分内置数据类型的序列化/反序列化,对于用户自定义的类型就无能为力,同时...cPickle和pickle的序列化/反序列化规则是一样的,我们可以使用

    python标准库.pdf

    数据表示是 Python 标准库的另一个重要组件,它提供了一些模块用于数据的序列化和反序列化,例如 `array`、`struct`、`xdrlib`、`marshal`、`pickle`、`cPickle` 和 `copy_reg` 等模块。这些模块可以帮助开发者快速...

    Python 3.6标准库参考手册.pdf.zip

    `pickle`和`cPickle`用于序列化和反序列化Python对象。 4. **网络通信模块**:`socket`模块为网络编程提供了低级别的接口,`http`模块(包括`http.client`和`http.server`)则支持HTTP协议,便于创建Web服务器和...

    Python中文标准库

    这部分的模块,如`array`、`struct`、`xdrlib`、`marshal`、`pickle`、`cPickle`、`copy_reg`、`pprint`、`repr`、`base64`、`binhex`、`quopri`、`uu`、`binascii`,提供了数据的多种表示和转换方式,是数据持久化...

    Python标准库(非常经典的各种模块介绍).docx

    在数据表示上,`array`和`struct`用于高效处理二进制数据,`pickle`和`cPickle`序列化和反序列化Python对象,`base64`等模块处理各种编码。 文件格式处理方面,如XML处理有`xml`模块,HTML解析有`htmllib`,配置...

Global site tag (gtag.js) - Google Analytics