本文由 大侠(AhcaoZhu)原创,转载请声明。
链接: https://blog.csdn.net/Ahcao2008

一图看懂 pickle 模块:用于序列化和反序列化, 资料整理+笔记(大全)-LMLPHP

一图看懂 pickle 模块:用于序列化和反序列化, 资料整理+笔记(大全)

摘要

说明

模块图

一图看懂 pickle 模块:用于序列化和反序列化, 资料整理+笔记(大全)-LMLPHP

pickle
	◆sys
	◆re
	◆io
	◆codecs
	_compat_pickle
_pickle

类关系图

一图看懂 pickle 模块:用于序列化和反序列化, 资料整理+笔记(大全)-LMLPHP

◆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对象表示,并返回其中指定的重构对象层次结构。

3 _pickle.PickleError

4 _pickle.PicklingError

5 _pickle.UnpicklingError

内嵌函数或方法

04-08 14:38