Data marshalling support¶
这些例程允许C代码使用与marshal
模块相同的数据格式处理序列化对象。有将数据写入串行化格式的功能,以及可用于读取数据的附加功能。用于存储编组数据的文件必须以二进制模式打开。
数值以最低有效字节优先存储。
模块支持两种版本的数据格式:版本0是历史版本,版本1在文件中共享内部字符串,并且在解组时。版本2对浮点数使用二进制格式。Py_MARSHAL_VERSION指示当前文件格式(当前为2)。
- void
PyMarshal_WriteLongToFile
(long value, FILE *file, int version)¶ 元数
long
整数,值到文件。这将只写入值的最低有效32位;而不管本地long
类型的大小。版本表示文件格式。
- void
PyMarshal_WriteObjectToFile
(PyObject *value, FILE *file, int version)¶ 组织一个Python对象值到文件。版本表示文件格式。
- PyObject*
PyMarshal_WriteObjectToString
(PyObject *value, int version)¶ - 返回值:新引用。
返回包含值的编组表示的字符串对象。版本表示文件格式。
以下函数允许读回编组值。
XXX错误检测怎么办?看起来读取超过文件的末尾将总是产生一个负数值(这是相关的),但不清楚的负值将无法正确处理时没有错误。什么是正确的方式告诉?应该只使用这些例程编写非负值?
- long
PyMarshal_ReadLongFromFile
(FILE *file)¶ 在打开用于读取的
FILE*
中,从数据流返回一个Clong
。使用此函数只能读取32位值,而不考虑long
的本机大小。出错时,引发异常并返回
-1
。
- int
PyMarshal_ReadShortFromFile
(FILE *file)¶ 在打开的用于读取的
FILE*
中,从数据流返回Cshort
。使用此功能只能读取16位值,而不管short
的原始大小。出错时,引发异常并返回
-1
。
- PyObject*
PyMarshal_ReadLastObjectFromFile
(FILE *file)¶ - 返回值:新引用。
从打开以供读取的
FILE*
中的数据流返回一个Python对象。与PyMarshal_ReadObjectFromFile()
不同,此函数假设不会从文件中读取更多对象,从而允许它积极地将文件数据加载到内存中,以便反序列化可以从内存中的数据操作,而不是读取一个字节从文件。如果您确定不会从文件中读取任何其他内容,请仅使用这些变体。