python pickle——万能持久化工具

本文介绍了Python中的pickle模块,用于数据持久化。pickle提供了dump和load方法,能够方便地将对象存储到文件并读取。此外,还提到了序列化与反序列化方法dumps和loads。pickle不仅支持基本数据类型,还能处理自定义对象,但需要注意加载时要确保自定义类已导入。最后,文章对比了pickle和json,指出json的跨语言通用性,但在Python中,pickle提供更直接的数据存储方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

今天的故事从持久化开始,最早知道持久化这个是上历史课上,太祖论断的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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

忘记开挂的程序猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值