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'))


  • 相关阅读:
    魔控(电脑遥控器)
    百度网盘不限速下载网页版
    2019计算机科学与技术实训认识以及总结
    压缩文件破解
    废旧手机改造第二弹之电脑扩展屏幕和变成复制屏幕
    废旧手机改造之家居监控器
    关于志愿填报的一点点东西(大佬对计算机专业认识)
    html恶搞之无限弹窗
    java重点知识点整理
    推荐一个学java的网站
  • 原文地址:https://www.cnblogs.com/mtcnn/p/9411792.html
Copyright © 2011-2022 走看看