本文由 大侠(AhcaoZhu)原创,转载请声明。
链接: https://blog.csdn.net/Ahcao2008
一图看懂 pickle 模块:用于序列化和反序列化, 资料整理+笔记(大全)
- 摘要
- 说明
- 模块图
- 类关系图
- 模块全展开
- 【pickle】
- 统计
- 常量
- 模块
- 函数
- 17 _getattribute(obj, name)
- 18 whichmodule(obj, name)
- 19 encode_long(x)
- 20 decode_long(data)
- 21 _dump(obj, file, protocol=None, *, fix_imports=True)
- 22 _dumps(obj, protocol=None, *, fix_imports=True)
- 23 _load(file, *, fix_imports=True, encoding='ASCII', errors='strict')
- 24 _loads(s, *, fix_imports=True, encoding='ASCII', errors='strict')
- 25 _test()
- 类
- 26 function
- 27 itertools.islice
- 28 functools.partial
- 29 _pickle.PickleError
- 30 _pickle.PicklingError
- 31 _pickle.UnpicklingError
- 32 pickle._Stop
- 33 pickle._Framer
- 34 pickle._Unframer
- 35 pickle._Pickler
- data
- method
- 2 clear_memo(self)
- 3 dump(self, obj)
- 4 get(self, i)
- 5 memoize(self, obj)
- 6 persistent_id(self, obj)
- 7 put(self, idx)
- 8 save(self, obj, save_persistent_id=True)
- 9 save_bool(self, obj)
- 10 save_bytes(self, obj)
- 11 save_dict(self, obj)
- 12 save_float(self, obj)
- 13 save_frozenset(self, obj)
- 14 save_global(self, obj, name=None)
- 15 save_list(self, obj)
- 16 save_long(self, obj)
- 17 save_none(self, obj)
- 18 save_pers(self, pid)
- 19 save_reduce(self, func, args, state=None, listitems=None,
- 20 save_set(self, obj)
- 21 save_str(self, obj)
- 22 save_tuple(self, obj)
- 23 save_type(self, obj)
- 36 pickle._Unpickler
- data
- method
- 2 find_class(self, module, name)
- 3 get_extension(self, code)
- 4 load(self)
- 5 load_additems(self)
- 6 load_append(self)
- 7 load_appends(self)
- 8 load_binbytes(self)
- 9 load_binbytes8(self)
- 10 load_binfloat(self)
- 11 load_binget(self)
- 12 load_binint(self)
- 13 load_binint1(self)
- 14 load_binint2(self)
- 15 load_binpersid(self)
- 16 load_binput(self)
- 17 load_binstring(self)
- 18 load_binunicode(self)
- 19 load_binunicode8(self)
- 20 load_build(self)
- 21 load_dict(self)
- 22 load_dup(self)
- 23 load_empty_dictionary(self)
- 24 load_empty_list(self)
- 25 load_empty_set(self)
- 26 load_empty_tuple(self)
- 27 load_ext1(self)
- 28 load_ext2(self)
- 29 load_ext4(self)
- 30 load_false(self)
- 31 load_float(self)
- 32 load_frame(self)
- 33 load_frozenset(self)
- 34 load_get(self)
- 35 load_global(self)
- 36 load_inst(self)
- 37 load_int(self)
- 38 load_list(self)
- 39 load_long(self)
- 40 load_long1(self)
- 41 load_long4(self)
- 42 load_long_binget(self)
- 43 load_long_binput(self)
- 44 load_mark(self)
- 45 load_memoize(self)
- 46 load_newobj(self)
- 47 load_newobj_ex(self)
- 48 load_none(self)
- 49 load_obj(self)
- 50 load_persid(self)
- 51 load_pop(self)
- 52 load_pop_mark(self)
- 53 load_proto(self)
- 54 load_put(self)
- 55 load_reduce(self)
- 56 load_setitem(self)
- 57 load_setitems(self)
- 58 load_short_binbytes(self)
- 59 load_short_binstring(self)
- 60 load_short_binunicode(self)
- 61 load_stack_global(self)
- 62 load_stop(self)
- 63 load_string(self)
- 64 load_true(self)
- 65 load_tuple(self)
- 66 load_tuple1(self)
- 67 load_tuple2(self)
- 68 load_tuple3(self)
- 69 load_unicode(self)
- 70 persistent_load(self, pid)
- 71 pop_mark(self)
- 37 _pickle.Pickler
- 38 _pickle.Unpickler
- 内嵌函数或方法
- 私有或局部
- 剩余
- 【sys】
- 【re】
- 【io】
- 【codecs】
- 【_compat_pickle】
- 统计
- 常量
- 【_pickle】
- 统计
- 常量
- 类
- 内嵌函数或方法
摘要
说明
模块图
pickle
◆sys
◆re
◆io
◆codecs
_compat_pickle
_pickle
类关系图
◆object
◆BaseException
◆Exception
_pickle.PickleError
_pickle.PicklingError
_pickle.UnpicklingError
pickle._Stop
_pickle.Pickler
_pickle.Unpickler
pickle._Framer
pickle._Pickler
pickle._Unframer
pickle._Unpickler
模块全展开
【pickle】
创建Python对象的可移植序列化表示。
有关注册自定义pickler的机制,请参阅模块copyreg。
请参阅模块pickletools源代码以获得广泛的注释。
类:
Pickler
Unpickler
函数:
dump(object, file)
dumps(object) -> string
load(file) -> object
loads(string) -> object
杂项:
__version__
format_version
compatible_formats
统计
常量
int
str
tuple
list
dict
模块
12 sys
13 re
14 io
15 codecs
16 _compat_pickle
函数
17 _getattribute(obj, name)
18 whichmodule(obj, name)
找到对象所属的模块。
19 encode_long(x)
编码一个长到二补的小端二进制字符串。
注意,0是一个特殊情况,返回一个空字符串,用于在LONG1 pickle上下文中保存一个字节。
>>> encode_long(0)
b''
>>> encode_long(255)
b'\xff\x00'
>>> encode_long(32767)
b'\xff\x7f'
>>> encode_long(-256)
b'\x00\xff'
>>> encode_long(-32768)
b'\x00\x80'
>>> encode_long(-128)
b'\x80'
>>> encode_long(127)
b'\x7f'
20 decode_long(data)
从二补小端二进制字符串解码一个长字符串。
>>> decode_long(b'')
0
>>> decode_long(b"\xff\x00")
255
>>> decode_long(b"\xff\x7f")
32767
>>> decode_long(b"\x00\xff")
-256
>>> decode_long(b"\x00\x80")
-32768
>>> decode_long(b"\x80")
-128
>>> decode_long(b"\x7f")
127
21 _dump(obj, file, protocol=None, *, fix_imports=True)
22 _dumps(obj, protocol=None, *, fix_imports=True)
23 _load(file, *, fix_imports=True, encoding=‘ASCII’, errors=‘strict’)
24 _loads(s, *, fix_imports=True, encoding=‘ASCII’, errors=‘strict’)
25 _test()
类
26 function
创建一个函数对象。
27 itertools.islice
28 functools.partial
29 _pickle.PickleError
30 _pickle.PicklingError
31 _pickle.UnpicklingError
32 pickle._Stop
33 pickle._Framer
method
34 pickle._Unframer
method
35 pickle._Pickler
data
method
清除pickler的“备忘录”。
memo是一种数据结构,它记住 pickler 已经看过哪些对象,因此共享或递归对象是根据引用而不是根据值进行pickle的。
这种方法在重复使用 pickler 时很有用。
将obj的pickle表示写入打开的文件。
在memo中存储一个对象。
36 pickle._Unpickler
data
method
从打开的文件中读取pickle对象表示。
返回文件中指定的重构对象层次结构。
37 _pickle.Pickler
这需要一个二进制文件来写入pickle数据流。
可选参数*protocol*告诉pickler使用给定的协议;支持的协议类型为:0、1、2、3、4。
默认协议为3;为Python 3设计的向后不兼容协议。
指定负协议版本将选择支持的最高协议版本。使用的协议越高级,读取生成的pickle所需的Python版本就越新。
*file*参数必须有一个write()方法,该方法接受单个字节的论点。
因此,它可以是为二进制文件打开的文件对象写作,是一种爱。BytesIO实例,或任何其他满足的自定义对象这个接口。
如果*fix_imports*为True且protocol小于3,pickle将尝试将新的Python 3名称映射到Python中使用的旧模块名称2,
这样pickle数据流就可以用Python 2读取。
data
method
清除pickler的“备忘录”。
memo是一种数据结构,它记住pickle器已经看过哪些对象,因此共享或递归对象是根据引用而不是根据值进行pickle的。
这种方法在重复使用酸洗器时很有用。
将给定对象的pickle表示写入打开的文件。
38 _pickle.Unpickler
这需要一个二进制文件来读取pickle数据流。
pickle的协议版本是自动检测的,因此不需要任何协议参数。超过pickle对象表示的字节将被忽略。
参数*file*必须有两个方法,一个read()方法接受一个整数参数,另一个readline()方法不需要参数。
这两个方法都应该返回字节。因此,*file*可以是打开用于读取的二进制文件对象,即io.BytesIO对象,或满足此接口的任何其他自定义对象。
可选关键字参数是*fix_imports*, *encoding*和*errors*,它们用于控制Python 2生成的pickle流的兼容性支持。
如果*fix_imports*为True, pickle将尝试将旧的Python 2名称映射到Python 3中使用的新名称。
*encoding*和*errors*告诉pickle如何解码Python 2 pickle的8位字符串实例;它们分别默认为'ASCII'和'strict'。
*encoding*可以是'bytes',将这些8位字符串实例读取为bytes对象。
data
method
从指定的模块返回一个对象
。如果需要,将导入模块。
子类可以重写此方法(例如,限制任意类和函数的解pickle)。
当需要类或函数对象时调用此方法。传递的两个参数都是str对象。
装上pickle。从构造函数中给定的打开文件对象读取pickle对象表示,并返回其中指定的重构对象层次结构。
内嵌函数或方法
私有或局部
剩余
【sys】
【re】
【io】
【codecs】
【_compat_pickle】
统计
常量
str
tuple
dict
【_pickle】
Python pickle模块的优化C实现。
统计
常量
类
1 _pickle.Pickler
这需要一个二进制文件来写入pickle数据流。(参见前面)
data
method
清除pickler的“备忘录”。(参见前面)
将给定对象的pickle表示写入打开的文件。
2 _pickle.Unpickler
这需要一个二进制文件来读取pickle数据流。(参见前面)
data
method
从指定的模块返回一个对象。(参见前面)
装上泡菜。从构造函数中给定的打开文件对象读取pickle对象表示,并返回其中指定的重构对象层次结构。