美文网首页
python pickle——万能持久化工具

python pickle——万能持久化工具

作者: 读书三万本 | 来源:发表于2020-09-30 22:50 被阅读0次

    前言

    今天的故事从持久化开始,最早知道持久化这个是上历史课上,太祖论断的xxx持久化,从此持久化就是一个高端、大气、上档次的词语。后来转行当程序员,老是听小伙伴说数据持久化,不明觉厉,不过因为懒,也没去搞明白是啥意思!今天刚好想学习pickle的知识,看到了持久化一词,去查了一下,哦,原来如此,妙不可言——果然是假大空!我已经浅薄地理解为把数据存储起来!

    之前在python基础里面我们有谈到过python文件读写,其实就是一种字符串的持久化方式。那么我们可以把数据想办法装换为字符串,就可以实现数据的持久化。那么有没有更好的方式呢?当然有啦,今天一起学习python特有的数据持久化模块pickle

    pickle详解

    • 把对象存储到文件中
      pickle.dump(obj, file[, protocol])
      其中file是文件对象,open(file_name, "wb"), 以二进制格式写入
    # 定义对象
    a = [1, 2, 3, 4]
    
    # 存储到a.pkl
    pickle.dump(a, open("a.pkl", "wb"))
    
    • 加载存储的pickle文件:
      pickle.load(file)
      其中file是文件对象,open(file_name, "rb"), 以二进制格式读取
    a = pickle.dump(open("a.pkl", "rb"))
    print(a)  # 输出 [1, 2, 3, 4]
    
    • pickle还能就像序列化,把数据转化为pickle二进制的bytes,对应的方法是pickle.dumps(obj), pickle.loads(obj)
    • 对于pickle,数据写入是什么类型,加载后就是什么类型,特别简单方便。pickle支持存储自定义类型,但是加载的时候自定义数据类型必须import或者加载类 [1]。

    写在最后

    pickle的口号是,一切都对象皆可持久化,简单方便直接暴力美啊,大家有什么想存储的对象,赶紧用pickle吧!pickle还有一个小兄弟json,它能对json格式对象进行持久化或者加载,json格式文件在很多语言都是通用的,所以处理json文件时候建议使用json模块。类似numpy里面也定义了save持久化的函数,但是底层其实是使用的pickle方法...

    名词解释

    • 持久化(Persistence),即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。持久化的主要应用是将内存中的对象存储在数据库中,或者存储在磁盘文件中、XML数据文件中等等。)
    • 序列化 (Serialization)是将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。

    参考

    1. https://www.liujiangblog.com/course/python/66
    2. https://www.cnblogs.com/hyjj/p/5746849.html

    相关文章

      网友评论

          本文标题:python pickle——万能持久化工具

          本文链接:https://www.haomeiwen.com/subject/iawpuktx.html