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

    其他不需要改

  • 相关阅读:
    自顶向下的单元测试策略
    孤立的测试策略
    单元测试
    控制流与数据流,信息流
    白盒测试的特点
    白盒测试
    黑盒测试优缺点
    appium对博客园APP进行自动化测试
    招聘测试人员,我在面试什么?
    测试开发这一年
  • 原文地址:https://www.cnblogs.com/seablog/p/7117597.html
Copyright © 2011-2022 走看看