python——pickle模块的详解
python——pickle模块的详解
介绍
pickle模块实现了用于序列化和反序列化Python对象结构的二进制协议
“Pickling”是将Python对象层次结构转换为字节流的过程, “unpickling”是反向操作,从而将字节流(来自二进制文件或类似字节的对象)转换回对象层次结构。
pickle协议和JSON(JavaScript Object Notation)的区别 :
- JSON是一种文本序列化格式(它输出unicode文本,虽然大部分时间它被编码utf-8),而pickle是二进制序列化格式;
- JSON是人类可读的,而pickle则不是;
- JSON是可互操作的,并且在Python生态系统之外广泛使用,而pickle是特定于Python的;
- pickle可以表示极其庞大的Python类型(其中许多是自动的,通过巧妙地使用Python的内省工具;复杂的案例可以通过实现特定的对象API来解决)。
- pickle 数据格式是特定于Python的。它的优点是没有外部标准强加的限制, 但是这意味着非Python程序可能无法重建pickled Python对象。
API
dumps()
- 序列化对象层次结构。
1 | pickle.dump(obj,file,protocol = None,*,fix_imports = True ) |
将obj对象的编码pickle编码表示写入到文件对象中。
1 | pickle.load(file,*,fix_imports = True,encoding =“ASCII”,errors =“strict” ) |
从打开的文件对象 文件中读取pickle对象表示,并返回其中指定的重构对象层次结构。
1 | pickle.dumps(obj,protocol = None,*,fix_imports = True ) |
将对象的pickled表示作为bytes对象返回,而不是将其写入文件。
1 | pickle.loads(bytes_object,*,fix_imports = True,encoding =“ASCII”,errors =“strict” ) |
从bytes对象读取pickle对象层次结构并返回其中指定的重构对象层次结构。
loads()
- 对数据流进行反序列化。
1 | import numpy as np |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 没有胡子的猫Asimok!
评论