数据封送支持

这些例程允许 C 代码使用与 marshal 模块相同的数据格式处理序列化对象。有一些函数用于将数据写入序列化格式,还有一些附加函数可用于读取数据。用于存储封送数据的文件必须以二进制模式打开。

数值以最低有效字节优先存储。

该模块支持多种数据格式版本;有关详细信息,请参阅 Python 模块 文档

Py_MARSHAL_VERSION

当前格式版本。参见 marshal.version

void PyMarshal_WriteLongToFile(long value, FILE *file, int version)

long 整型 value 封送到 file。这将只写入 value 的最低有效 32 位;无论本地 long 类型的大小如何。version 指示文件格式。

此函数可能会失败,在这种情况下它会设置错误指示器。使用 PyErr_Occurred() 来检查错误。

void PyMarshal_WriteObjectToFile(PyObject *value, FILE *file, int version)

将 Python 对象 value 封送到 fileversion 指示文件格式。

此函数可能会失败,在这种情况下它会设置错误指示器。使用 PyErr_Occurred() 来检查错误。

PyObject *PyMarshal_WriteObjectToString(PyObject *value, int version)
返回值:新引用。

返回一个包含 value 的封送表示的字节对象。version 指示文件格式。

以下函数允许读回封送值。

long PyMarshal_ReadLongFromFile(FILE *file)

从已打开用于读取的 FILE* 中的数据流返回一个 C long。使用此函数只能读取 32 位值,无论 long 的原生大小如何。

出错时,设置相应的异常(EOFError)并返回 -1

int PyMarshal_ReadShortFromFile(FILE *file)

从已打开用于读取的 FILE* 中的数据流返回一个 C short。使用此函数只能读取 16 位值,无论 short 的原生大小如何。

出错时,设置相应的异常(EOFError)并返回 -1

PyObject *PyMarshal_ReadObjectFromFile(FILE *file)
返回值:新引用。

从已打开用于读取的 FILE* 中的数据流返回一个 Python 对象。

出错时,设置相应的异常(EOFErrorValueErrorTypeError)并返回 NULL

PyObject *PyMarshal_ReadLastObjectFromFile(FILE *file)
返回值:新引用。

从已打开用于读取的 FILE* 中的数据流返回一个 Python 对象。与 PyMarshal_ReadObjectFromFile() 不同,此函数假定不会再从文件中读取其他对象,从而允许它积极地将文件数据加载到内存中,以便反序列化可以从内存中的数据操作,而不是从文件中一次读取一个字节。仅当您确定不会再从文件中读取任何其他内容时才使用此变体。

出错时,设置相应的异常(EOFErrorValueErrorTypeError)并返回 NULL

PyObject *PyMarshal_ReadObjectFromString(const char *data, Py_ssize_t len)
返回值:新引用。

从包含 data 指向的 len 字节的字节缓冲区中的数据流返回一个 Python 对象。

出错时,设置相应的异常(EOFErrorValueErrorTypeError)并返回 NULL