數據 marshal 操作支持?

這些例程允許 C 代碼處理與 marshal 模塊所用相同數據格式的序列化對象。 其中有些函數可用來將數據寫入這種序列化格式,另一些函數則可用來讀取并恢復數據。 用于存儲 marshal 數據的文件必須以二進制模式打開。

數字值在存儲時會將最低位字節(jié)放在開頭。

此模塊支持兩種數據格式版本:第 0 版為歷史版本,第 1 版本會在文件和 marshal 反序列化中共享固化的字符串。 第 2 版本會對浮點數使用二進制格式。 Py_MARSHAL_VERSION 指明了當前文件的格式(當前取值為 2)。

void PyMarshal_WriteLongToFile(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 指明文件格式的版本。

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

返回一個包含 value 的 marshal 表示形式的字節(jié)串對象。 version 指明文件格式的版本。

以下函數允許讀取并恢復存儲為 marshal 格式的值。

long PyMarshal_ReadLongFromFile(FILE *file)?

從打開用于讀取的 FILE* 的對應數據流返回一個 C long。 使用只函數只能讀取 32 位的值,無論本機 long 類型的長度為何。

發(fā)生錯誤時,將設置適當的異常 (EOFError) 并返回 -1

int PyMarshal_ReadShortFromFile(FILE *file)?

從打開用于讀取的 FILE* 的對應數據流返回一個 C short。 使用此函數只能讀取 16 位的值,無論本機 short 類型的長度為何。

發(fā)生錯誤時,將設置適當的異常 (EOFError) 并返回 -1。

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

從打開用于讀取的 FILE* 的對應數據流返回一個 Python 對象。

發(fā)生錯誤時,將設置適當的異常 (EOFError, ValueErrorTypeError) 并返回 NULL。

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

從打開用于讀取的 FILE* 的對應數據流返回一個 Python 對象。 不同于 PyMarshal_ReadObjectFromFile(),此函數假定將不再從該文件讀取更多的對象,允許其將文件數據積極地載入內存,以便反序列化過程可以在內存中的數據上操作而不是每次從文件讀取一個字節(jié)。 只有當你確定不會再從文件讀取任何內容時方可使用此形式。

發(fā)生錯誤時,將設置適當的異常 (EOFError, ValueErrorTypeError) 并返回 NULL。

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

從包含指向 datalen 個字節(jié)的字節(jié)緩沖區(qū)對應的數據流返回一個 Python 對象。

發(fā)生錯誤時,將設置適當的異常 (EOFError, ValueErrorTypeError) 并返回 NULL。