On this page
数据编组支持
这些例程允许 C 代码使用与marshal模块相同的数据格式来处理序列化对象。有一些Function可将数据写入序列化格式,还有一些附加Function可用于读回数据。必须以二进制模式打开用于存储编组数据的文件。
数值先存储最低有效字节。
该模块支持两种版本的数据格式:版本 0 是历史版本,版本 1 在文件中共享内联字符串,并且在解组时也是如此。版本 2 将二进制格式用于浮点数。 Py_MARSHAL_VERSION
表示当前文件格式(当前为 2)。
无效
PyMarshal_WriteLongToFile
(long * value *,FILE ** file *,int * version *)- 将
long
整数* value 编组为 file 。这只会写入 value *的最低有效 32 位;不论原生long
类型的大小如何。 * version *表示文件格式。
- 将
void
PyMarshal_WriteObjectToFile
(PyObject *value ,FILE file *,int * version *)- 将 Python 对象* value 编组为 file *。 * version *表示文件格式。
PyObject *
PyMarshal_WriteObjectToString
(PyObject ** value *,int * version *)- 返回值:新参考.
返回一个包含* value *的编组表示形式的字节对象。 * version *表示文件格式。
以下Function允许读回编组的值。
- 长
PyMarshal_ReadLongFromFile
(FILE ** file *)- 从打开的
FILE*
数据流中返回 Clong
。不管long
的原始大小如何,使用此函数只能读取 32 位值。
- 从打开的
发生错误时,设置适当的异常(EOFError)并返回-1
。
- int
PyMarshal_ReadShortFromFile
(FILE ** file *)- 从打开的
FILE*
数据流中返回 Cshort
。不论short
的原始大小如何,使用此函数只能读取 16 位值。
- 从打开的
发生错误时,设置适当的异常(EOFError)并返回-1
。
- PyObject *
PyMarshal_ReadObjectFromFile
(FILE ** file *)- 返回值:新参考.
从打开的FILE*
中读取数据流中的 Python 对象。
出错时,设置适当的异常(EOFError,ValueError或TypeError)并返回NULL
。
- PyObject *
PyMarshal_ReadLastObjectFromFile
(FILE ** file *)- 返回值:新参考.
从打开的FILE*
中读取数据流中的 Python 对象。与PyMarshal_ReadObjectFromFile()不同,此函数假定不会再从文件中读取任何对象,从而使其可以将文件数据积极地加载到内存中,以便反序列化可以从内存中的数据进行操作,而不是一次从文件中读取一个字节。仅当您确定不会从文件中读取其他内容时,才使用这些变体。
出错时,设置适当的异常(EOFError,ValueError或TypeError)并返回NULL
。
- PyObject *
PyMarshal_ReadObjectFromString
(const char ** data *,Py_ssize_t * len *)- 返回值:新参考.
在字节缓冲区中从数据流返回一个 Python 对象,该缓冲区包含* data 指向的 len *个字节。
出错时,设置适当的异常(EOFError,ValueError或TypeError)并返回NULL
。