数据编组支持

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

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

该模块支持两个版本的数据格式:版本0是历史版本,版本1共享文件中的内部字符串,并且在解编数据时。版本2对浮点数使用二进制格式。 Py_MARSHAL_VERSION 指示当前文件格式(当前为2)。

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

marshalA long 整数, value ,至 file . 这将只写入 value ;无论本机大小 long 类型。 版本 指示文件格式。

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

封送一个python对象, value ,至 file . 版本 指示文件格式。

PyObject *PyMarshal_WriteObjectToString(PyObject *value, int version)
Return value: New reference.

返回一个字节对象,该对象包含 value . 版本 指示文件格式。

以下函数允许读取已封送的值。

long PyMarshal_ReadLongFromFile(FILE *file)

返回C long 从中的数据流 FILE* 打开阅读。使用此函数只能读取32位值,而不管其本机大小 long .

出错时,设置适当的异常 (EOFError )和回报 -1 .

int PyMarshal_ReadShortFromFile(FILE *file)

返回C short 从中的数据流 FILE* 打开阅读。使用此函数只能读取16位的值,而不管 short .

出错时,设置适当的异常 (EOFError )和回报 -1 .

PyObject *PyMarshal_ReadObjectFromFile(FILE *file)
Return value: New reference.

从中的数据流返回python对象 FILE* 打开阅读。

出错时,设置适当的异常 (EOFErrorValueErrorTypeError )和回报 NULL .

PyObject *PyMarshal_ReadLastObjectFromFile(FILE *file)
Return value: New reference.

从中的数据流返回python对象 FILE* 打开阅读。不像 PyMarshal_ReadObjectFromFile() ,此函数假定不会从文件中读取更多的对象,从而允许它将文件数据大量加载到内存中,以便反序列化可以从内存中的数据操作,而不是从文件中一次读取一个字节。只有在确定不会从文件中读取任何其他内容时,才使用这些变量。

出错时,设置适当的异常 (EOFErrorValueErrorTypeError )和回报 NULL .

PyObject *PyMarshal_ReadObjectFromString(const char *data, Py_ssize_t len)
Return value: New reference.

从包含 len 指向的字节 data .

出错时,设置适当的异常 (EOFErrorValueErrorTypeError )和回报 NULL .