資料編組支援

這些例程允許 C 程式碼使用與 marshal 模組相同的資料格式來處理序列化物件。 有一些函式可以將資料寫入序列化格式,還有一些附加函式可以用來將資料讀回。用於儲存編組資料的檔案必須以二進位制模式開啟。

數值以最低有效位元組優先的方式儲存。

該模組支援兩種資料格式版本:版本 0 是歷史版本,版本 1 在檔案中共享 interned 字串,並在解組時共享。 版本 2 對浮點數使用二進位制格式。 Py_MARSHAL_VERSION 指示當前檔案格式(目前為 2)。

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* 編組到 *file*。 *version* 指示檔案格式。

此函式可能會失敗,在這種情況下,它會設定錯誤指示符。 使用 PyErr_Occurred() 來檢查它。

PyObject *PyMarshal_WriteObjectToString(PyObject *value, int version)
返回值:新引用。

返回一個位元組物件,其中包含 *value* 的編組表示形式。 *version* 指示檔案格式。

以下函式允許將編組值讀回。

long PyMarshal_ReadLongFromFile(FILE *file)

從開啟以進行讀取的 FILE* 中的資料流返回一個 C long。 無論 long 的原生大小如何,只能使用此函式讀取 32 位的值。

如果出現錯誤,則設定適當的異常 (EOFError) 並返回 -1

int PyMarshal_ReadShortFromFile(FILE *file)

從開啟以進行讀取的 FILE* 中的資料流返回一個 C short。 無論 short 的原生大小如何,只能使用此函式讀取 16 位的值。

如果出現錯誤,則設定適當的異常 (EOFError) 並返回 -1

PyObject *PyMarshal_ReadObjectFromFile(FILE *file)
返回值:新引用。

從開啟以進行讀取的 FILE* 中的資料流返回一個 Python 物件。

如果發生錯誤,則設定適當的異常(EOFError, ValueErrorTypeError) 並返回 NULL

PyObject *PyMarshal_ReadLastObjectFromFile(FILE *file)
返回值:新引用。

從開啟以進行讀取的 FILE* 中的資料流返回一個 Python 物件。 與 PyMarshal_ReadObjectFromFile() 不同,此函式假設不會從檔案中讀取更多物件,從而可以積極地將檔案資料載入到記憶體中,以便反序列化可以從記憶體中的資料而不是從檔案中一次讀取一個位元組進行操作。 如果您確定不會從檔案中讀取任何其他內容,則僅使用這些變體。

如果發生錯誤,則設定適當的異常(EOFError, ValueErrorTypeError) 並返回 NULL

PyObject *PyMarshal_ReadObjectFromString(const char *data, Py_ssize_t len)
返回值:新引用。

從由 *data* 指向的包含 *len* 個位元組的位元組緩衝區中的資料流返回一個 Python 物件。

如果發生錯誤,則設定適當的異常(EOFError, ValueErrorTypeError) 並返回 NULL