zoukankan      html  css  js  c++  java
  • pickle模块的基本使用

    python的pickle模块实现了基本的数据序列和反序列化。通过pickle模块的序列化操作我们能够将程序中运行的对象信息保存到文件中去,永久存储;通过pickle模块的反序列化操作,我们能够从文件中创建上一次程序保存的对象。

    Pickle模块提供了四个功能:dumps、dump、loads、load
    他们之间的区别:

    dump(object, file) #直接将数据写入文件中 #dump(数据,文件)
    dumps(object) -> string #将数据转换为字符串 #dumps(数据),转换为字符串
    load(file) -> object #将文件内容读取并返回为原类型 #load(文件),转换为文件原来的类型
    loads(string) -> object #将文件字符串读取并返回为原类型 #loads(文件内容),转换为原来的类型

    dumps,loads 还需要使用write,read 读写数据
    dump,load 直接帮你 write,read

    1.将内存中的对象转换成为文本流

    import pickle
    class Bird(object):
        have_feather = True
        # way_of_reproduction  = 'egg'
        def __init__(self):
            self.way_of_reproduction = 'egg'
        def __unicode__(self):
            return self.way_of_reproduction
    summer       = Bird()                       
    fn           = 'a.pkl'
    with open(fn, 'w') as f:                  
        picklestring = pickle.dump(summer, f)  

    使用pickle.dumps()方法可以将对象summer转换成了字符串 picklestring(也就是文本流)

    2.将文本文件转换为对象

    import pickle
    class Bird(object): have_feather = True way_of_reproduction = 'egg' fn = 'a.pkl' with open(fn, 'r') as f: summer = pickle.load(f) print summer.way_of_reproduction

    cPickle包

    cPickle包的功能和用法与pickle包几乎完全相同 (其存在差别的地方实际上很少用到),不同在于cPickle是基于c语言编写的,速度是pickle包的1000倍。对于上面的例子,如果想使用cPickle包,我们都可以将import语句改为:

    import cPickle as pickle

    其他不需要改

  • 相关阅读:
    盛最多水的容器
    寻找2个有序数组的中位数
    从链表中删除总和值为0的连续节点
    链表中的下一个更大节点
    链表的中间节点
    循环有序链表的插入
    设计链表
    链表组件
    扁平化多级双向链表
    将二叉搜索数转化为排序的双向链表
  • 原文地址:https://www.cnblogs.com/seablog/p/7117597.html
Copyright © 2011-2022 走看看