• 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

    其他不需要改

  • 相关阅读:
    C# fields Study
    单词1
    C# Base Class Study
    C# Type Parameters Study
    C#3.0学习系列类的成员
    美国式教育
    单词2
    项目添加Struts2支持,并修改默认后缀
    Java多线程的学习和应用
    SQL PIVOT
  • 原文地址:https://www.cnblogs.com/seablog/p/7117597.html
Copyright © 2020-2023  润新知