資料封送支援¶
這些例程允許 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 封送到 file。version 指示檔案格式。
此函式可能會失敗,在這種情況下它會設定錯誤指示器。使用
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 物件。
出錯時,設定相應的異常(
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)¶
- 返回值:新引用。
從包含 data 指向的 len 位元組的位元組緩衝區中的資料流返回一個 Python 物件。
出錯時,設定相應的異常(
EOFError
、ValueError
或TypeError
)並返回NULL
。