数据 marshal 操作支持
数字值在存储时会将最低位字节放在开头。
The module supports two versions of the data format: version 0 is the historical version, version 1 shares interned strings in the file, and upon unmarshalling. Version 2 uses a binary format for floating point numbers. Py_MARSHAL_VERSION indicates the current file format (currently 2).
void (long value, FILE *file, int version)
将一个 long
整数 value 以 marshal 格式写入 file。 这将只写入 value 最低的 32 位;无论本机 long
类型的长度如何。 version 指明文件格式的版本。
void PyMarshal_WriteObjectToFile
(PyObject value*, FILE file, int version*)
将一个 Python 对象 value 以 marshal 格式写入 file。 version 指明文件格式的版本。
PyMarshal_WriteObjectToString
(PyObject **value, int version)
Return value: New reference.
以下函数允许读取并恢复存储为 marshal 格式的值。
long PyMarshal_ReadLongFromFile
(FILE *file)
从打开用于读取的 的对应数据流返回一个 C long
。 使用此函数只能读取 32 位的值,无论本机 long
类型的长度如何。
发生错误时,将设置适当的异常 () 并返回 -1
。
int PyMarshal_ReadShortFromFile
(FILE *file)
从打开用于读取的 FILE*
的对应数据流返回一个 C 。 使用此函数只能读取 16 位的值,无论本机 short
的长度如何。
发生错误时,将设置适当的异常 (EOFError) 并返回 -1
。
PyMarshal_ReadObjectFromFile
(FILE **file)
从打开用于读取的 FILE*
的对应数据流返回一个 Python 对象。
On error, sets the appropriate exception (EOFError, or TypeError) and returns NULL.
PyMarshal_ReadLastObjectFromFile
(FILE **file)
Return value: New reference.
从打开用于读取的 的对应数据流返回一个 Python 对象。 不同于 PyMarshal_ReadObjectFromFile(),此函数假定将不再从该文件读取更多的对象,允许其将文件数据积极地载入内存,以便反序列化过程可以在内存中的数据上操作而不是每次从文件读取一个字节。 只有当你确定不会再从文件读取任何内容时方可使用此方式。
On error, sets the appropriate exception (, ValueError or ) and returns NULL.
PyObject PyMarshal_ReadObjectFromString
(const char **data, Py_ssize_t len)
Return value: New reference.
On error, sets the appropriate exception (, ValueError or ) and returns NULL.