python如何利用pickle序列化和反序列化任意变量?
发布于 作者:苏南大叔 来源:程序如此灵动~

python
语言如何对变量进行序列化呢?如何保存为.pickle
文件?又如何从文件反序列化回变量呢?这就是本文要讨论的问题。其实,这些功能都是通过pickle
这个内置库来完成的。它和php
的serialize()
/unserialize()
是差不多的效果。

苏南大叔的“程序如此灵动”博客,记录苏南大叔的程序经验文章。本文测试环境:win10
,python@3.12.1
。pickle
模块实现了Python
对象结构的二进制序列化和反序列化。
龙套标的角色
pickle.dumps() 变量序列化为二进制
byte = pickle.dumps(obj)
,以二进制的形式返回被序列化后的对象byte
,其中obj
是要序列化的对象。
pickle.dump() 变量序列化为文件【常用】
pickle.dump(obj, file)
,将一个对象写入到指定的文件中,其中obj
参数是要写入的对象,file
是要写入的文件。
或者:

pickle.loads() 二进制还原为变量
obj = pickle.loads(bytes_object)
,将序列化后的二进制序列进行反序列化,其中bytes_object
是序列化后的二进制序列。
pickle.load()二进制文件还原为变量【常用】
obj = pickle.load(file)
,将指定的序列化后的文件进行反序列化,其中file
是要进行反序列化的文件。
或者

题外话
下面写个题外话:php
版本的序列化和反序列化。
从这个例子可以看出,python
的序列化和php
的序列化,虽然看起来差不多,但实际上还是有很大区别的。
语言 | 序列化 | 反序列化 | 双方 |
---|---|---|---|
python | pickle.dump() | pickle.load() | 变量和二进制文件 |
python | pickle.dumps() | pickle.loads() | 变量和二进制 |
php | serialize() | unserialize() | 变量和字符串 |
python
序列化的结果,大家看不懂。php
序列化的结果,大家看得懂。
相关文章
很多年前,使用scrapy
导出文件的时候,就有这个.pickle
格式。参考:
结语
苏南大叔写的“python”经验文章,请点击:


