zoukankan      html  css  js  c++  java
  • python pickle/cPickle模块

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

    反序列化(unpickling):相应的,把变量的内容从序列化的对象重新读到内存里的过程称为反序列化;


    python中有两个模块可以实现对象的序列化,pickle和cPickle(注意P大写),cPickle是用C语言实现的,pickle是用纯python语言实现的,相比,cPickle的读写效率高一些。

    使用的时候,一般先尝试导入cPickle,如果失败,再导入pickle模块。

    try:
        import cPickle as pickle
    except ImportError:
        import pickle


    可以被pickle模块存储的对象类型:
    所有Python支持的 原生类型 : 布尔, 整数, 浮点数, 复数, 字符串, bytes(字节串)对象, 字节数组, 以及 None.
    –由任何原生类型组成的列表,元组,字典
    –由任何原生类型组成的列表,元组,字典和集合组成的列表,元组,字典和集合(可以一直嵌套下去,直至Python支持的最大递归层数).
    –函数,类,和类的实例(带警告)。

    pickle模块中主要的函数是dump()/load()和dumps()/loads()。

    dump()实现把一个对象序列化之后以特定的格式保存到指定的文件中,dumps()实现把一个对象转化为序列化之后的str数据,然后可以对这个str数据进行其他处理或者把这个str数据写入文件;

    load()实现把一个已经序列化并写入文本中的对象反序列化成内存中的对象,loads()实现把一个反序列化的str对象反序列化成内存中的对象。

    dir = {bird:0,pig:1,cat:2,dog:3}
    f = open('animal.pkl','wb')
    pickle.dump(dir,f)
    f.close

    在程序所在目录下生成animal.pkl文件,保存的是dir内存对象的序列化后的信息。

    f = open('animal.pkl', 'rb')
    d = pickle.load(f)
    f.close()
    print d

    load()返回从加载的文件中反序列化出的对象,d中的内容就是dir中的内容。


    dumps()/loads()用法:

    dir = {'bird':0,'pig':1,'cat':2,'dog':3}
    ds = pickle.dumps(dir)
    print ds
    ls = pickle.loads(ds)
    print ls

    ds中的内容就是dir序列化后的对象,ls中的内容就是ds反序列化之后的对象,ls跟dir保持一致。


    dump()和load()函数的参数也可以合并写为pickle.dump(dir,open('animal.pkl','wb'))和pickle.load(open('animal.pkl', 'rb'))


  • 相关阅读:
    Win8系统 Python安装
    一些安卓开源框架整理
    Android 媒体键监听以及模拟媒体键盘的实现 demo
    android View 自动 GONE 问题
    Android 定时器TimerTask 简单使用
    关于Android studio 相对 eclipse 优点
    Java序列化与反序列化
    android shape的使用 边框
    Android Studio 修改 包名 package name
    Android WebView Long Press长按保存图片到手机
  • 原文地址:https://www.cnblogs.com/mtcnn/p/9411792.html
Copyright © 2011-2022 走看看