pickle模块使用的数据格式是python专用的,并且不同版本不向后兼容,同时也不能被其他语言说识别。要和其他语言交互,可以使用内置的json包

cPickle可以对任意一种类型的python对象进行序列化操作,比如list,dict,甚至是一个类的对象等直接保存到文件,而不需要把他们转化为字符串,也不用底层的文件访问操作把它们写入到一个二进制文件里

cPickle是pickle得一个更快得C语言编译版本。pickle和cPickle相当于java的序列化和反序列化操作。

python3中cPickle模块已经更名为_pickle,所以在python3中导入时可以使用:import _pickle as cPickle

cPickle中主要有四个函数:

1. dump: 将python对象序列化保存到本地的文件。

import cPickle
data = range(1000)

cPickle.dump(data,open("test\\data.pkl","wb"))

2. dumps:将python对象序列化保存到一个字符串变量中。

data_string = cPickle.dumps(data)

3. load:载入本地文件,恢复python对象

data = cPickle.load(open("test\\data.pkl","rb"))

4.loads()函数执行和load() 函数一样的反序列化,从字符串变量中载入python对象。取代接受一个流对象并去文件读取序列化后的数据,它接受包含序列化后的数据的str对象, 直接返回的对象。

data = cPickle.loads(data_string)

#! /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'})

cPickle对python对象进行序列化,序列化到文件或内存的更多相关文章

  1. pickle和cPickle:Python对象的序列化(上)

    https://segmentfault.com/a/1190000002493548 pickle模块实现了一种算法,将任意一个Python对象转化成一系列字节(byets).此过程也调用了seri ...

  2. python之数据的序列化

    参考博客:http://www.cnblogs.com/yyds/p/6563608.html 数据的序列化功能表 json.dumps() 将python数据类型转换为(json)字符串 json. ...

  3. 十:python 对象类型详解六:文件

    一:文件 1.简介:内置open 函数会创建一个python 文件对象,可以作为计算机上的一个文件链接.在调用open 之后,可以通过调用返回文件对象的方法来读写相关外部文件.文件对象只是常见文件处理 ...

  4. Python对象体系揭秘

    Guido用C语言创造了Python,在Python的世界中一切皆为对象. 一.C视角中的Python对象 让我们一起追溯到源头,Python由C语言实现,且向外提供了C的API http://doc ...

  5. python对象序列化或持久化的方法

    http://blog.csdn.net/chen_lovelotus/article/details/7233293 一.Python对象持久化方法 目前为止,据我所知,在python中对象持久化有 ...

  6. Python:time模块&序列化&生成随机数&反射

    time模块:>>> import time >>> time.time <built-in function time> >>> t ...

  7. Python学习之json序列化

    一.什么是序列化 在我们存储数据或者网络传输数据的时候,需要对我们的对象进行处理,把对象处理成方便存储和传输的数据格式.这个过程叫序列化,不同的序列化结果也不同,但目的是一样的,都是为了存储和传输 在 ...

  8. Python基础(正则、序列化、常用模块和面向对象)-day06

    写在前面 上课第六天,打卡: 天地不仁,以万物为刍狗: 一.正则 - 正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法: - 在线正则工具:http://tool ...

  9. python基础之模块 序列化

    什么是序列化(picking)? 我们把变量从内存中变成可存储或传输的过程称之为序列化. 序列化之后,就可以把序列化后的内容写入磁盘,或者通过网络传输到别的机器上. 反过来,把变量内容从序列化的对象重 ...

随机推荐

  1. PHP--时间格式处理

    Ymd格式转Y-m-d或转成时间戳将Ymd格式如19930811转成1993-08-11格式 date('Y-m-d',strtotime('19930811') 将Ymd格式如19930811转成时 ...

  2. Eclipse、MinGW、JNI编写C++生成dll, Java端调用的完整示例(附java.lang.UnsatisfiedLinkError解决方法)

     Eclipse.MinGW.JNI编写C++生成dll, Java端调用的完整示例(附java.lang.UnsatisfiedLinkError解决方法) 问题背景:之前的JNI编程都是基于And ...

  3. stackless 安装

    1.下载源码 https://bitbucket.org/stackless-dev/stackless/wiki/Download 2.编译.安装.路径生效 apt-get install libr ...

  4. Mac OS 安装 独立的asio库

    先安装boost,见前文,然后上官网下载不带boost的asio,版本为:asio-1.12.2 cd到下载的库目录,配置 ./configure --with-boost="boost的安 ...

  5. 统计py文件或目录代码行数

    bug:当遇到3个"""时 可能会将下面的代码不计入代码总行数 import os def count_path(path,countcode): if os.path. ...

  6. 设置Linux系统的空闲等待时间TMOUT的方法和Linux反空闲设置的两种方法

    为了增强linux系统的安全性,我们需要在用户输入空闲一段时间后自动断开,这个操作可以由设置TMOUT值来实现.将以下字段加入到/etc/profile 中即可(对所有用户生效). export TM ...

  7. 关于Layui 响应式移动端轮播图的问题

    用layui做轮播图,在手机上宽度异常, 可通过以下方法解决, 不喜欢layui的同学可以选择Swiper // 轮播图 layui.use('carousel', function () { var ...

  8. RSA 2019安全大会:企业资产管理成行业新风向标,云上安全占优势

    美国时间3月4-8日,国际知名信息安全峰会RSA Conference在美国旧金山开幕,云安全及云可以为企业提供更可靠的资产管理方式成为大会热点. 此次峰会共吸引全球700多家机构参展,其中近42%为 ...

  9. 数组的方法之(Array.prototype.filter() 方法)

    filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素.     注意: filter() 不会对空数组进行检测.     注意: filter() 不会改变原始 ...

  10. 一个不错的插件(软件).NET开发

    http://www.gcpowertools.com.cn/products/default.htm 葡萄城 先记录一下!