資料封送支援

這些例程允許 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