python序列化之pickle

pickle是python独有的序列化与反序列化的第三方库,根据官方文档[1],在pickle之外,python同时还有marshal[2]可以支持更复杂的功能。但是在一般情况下,推荐先使用pickle来完成序列化和反序列化的任务

pickle支持六种序列化协议,目前python3.8以后在用的是第5版本。序列化是一种比持久性更原始的概念。 尽管pickle可以读写文件对象,但是它不能处理持久对象的命名问题,也不能解决并发访问持久对象的问题。 pickle模块可以将复杂的对象转换为字节流,并且可以将字节流转换为具有相同内部结构的对象。 也许与这些字节流有关的最好的做法是将它们写入文件,但也可以考虑通过网络发送它们或将它们存储在数据库中[3]。

pickle常用的四个方法:dump, dumps, load, loads,其中前两个是序列化,后两个是反序列化

dump和dumps的分别:dumps不将对象的层次结构也写入文件中

[1]https://docs.python.org/3/library/pickle.html

[2]https://docs.python.org/3/library/marshal.html#module-marshal

[3]https://docs.python.org/3/library/shelve.html#module-shelve

原文地址:https://www.cnblogs.com/J14nWe1/p/14658494.html