數(shù)據(jù) marshal 操作支持?
這些例程允許 C 代碼處理與 marshal 模塊所用相同數(shù)據(jù)格式的序列化對(duì)象。 其中有些函數(shù)可用來(lái)將數(shù)據(jù)寫(xiě)入這種序列化格式,另一些函數(shù)則可用來(lái)讀取并恢復(fù)數(shù)據(jù)。 用于存儲(chǔ) marshal 數(shù)據(jù)的文件必須以二進(jìn)制模式打開(kāi)。
數(shù)字值在存儲(chǔ)時(shí)會(huì)將最低位字節(jié)放在開(kāi)頭。
此模塊支持兩種數(shù)據(jù)格式版本:第 0 版為歷史版本,第 1 版本會(huì)在文件和反向 marshal 操作時(shí)共享固化的字符串。 第 2 版本會(huì)對(duì)浮點(diǎn)數(shù)使用二進(jìn)制格式。 Py_MARSHAL_VERSION 指明了當(dāng)前文件的格式(當(dāng)前取值為 2)。
-
void
PyMarshal_WriteLongToFile(long?value, FILE?*file, int?version)? 將一個(gè)
long整數(shù) value 以 marshal 格式寫(xiě)入 file。 這將只寫(xiě)入 value 最低的 32 位;無(wú)論本機(jī)long類型的長(zhǎng)度如何。 version 指明文件格式的版本。
-
void
PyMarshal_WriteObjectToFile(PyObject?*value, FILE?*file, int?version)? 將一個(gè) Python 對(duì)象 value 以 marshal 格式寫(xiě)入 file。 version 指明文件格式的版本。
-
PyObject*
PyMarshal_WriteObjectToString(PyObject?*value, int?version)? - Return value: New reference.
返回一個(gè)包含 value 的 marshal 表示形式的字節(jié)串對(duì)象。 version 指明文件格式的版本。
以下函數(shù)允許讀取并恢復(fù)存儲(chǔ)為 marshal 格式的值。
-
long
PyMarshal_ReadLongFromFile(FILE?*file)? 從打開(kāi)用于讀取的
FILE*的對(duì)應(yīng)數(shù)據(jù)流返回一個(gè) Clong。 使用此函數(shù)只能讀取 32 位的值,無(wú)論本機(jī)long類型的長(zhǎng)度如何。發(fā)生錯(cuò)誤時(shí),將設(shè)置適當(dāng)?shù)漠惓?(
EOFError) 并返回-1。
-
int
PyMarshal_ReadShortFromFile(FILE?*file)? 從打開(kāi)用于讀取的
FILE*的對(duì)應(yīng)數(shù)據(jù)流返回一個(gè) Cshort。 使用此函數(shù)只能讀取 16 位的值,無(wú)論本機(jī)short的長(zhǎng)度如何。發(fā)生錯(cuò)誤時(shí),將設(shè)置適當(dāng)?shù)漠惓?(
EOFError) 并返回-1。
-
PyObject*
PyMarshal_ReadObjectFromFile(FILE?*file)? - Return value: New reference.
從打開(kāi)用于讀取的
FILE*的對(duì)應(yīng)數(shù)據(jù)流返回一個(gè) Python 對(duì)象。發(fā)生錯(cuò)誤時(shí),將設(shè)置適當(dāng)?shù)漠惓?(
EOFError,ValueError或TypeError) 并返回NULL。
-
PyObject*
PyMarshal_ReadLastObjectFromFile(FILE?*file)? - Return value: New reference.
從打開(kāi)用于讀取的
FILE*的對(duì)應(yīng)數(shù)據(jù)流返回一個(gè) Python 對(duì)象。 不同于PyMarshal_ReadObjectFromFile(),此函數(shù)假定將不再?gòu)脑撐募x取更多的對(duì)象,允許其將文件數(shù)據(jù)積極地載入內(nèi)存,以便反序列化過(guò)程可以在內(nèi)存中的數(shù)據(jù)上操作而不是每次從文件讀取一個(gè)字節(jié)。 只有當(dāng)你確定不會(huì)再?gòu)奈募x取任何內(nèi)容時(shí)方可使用此方式。發(fā)生錯(cuò)誤時(shí),將設(shè)置適當(dāng)?shù)漠惓?(
EOFError,ValueError或TypeError) 并返回NULL。
-
PyObject*
PyMarshal_ReadObjectFromString(const char?*data, Py_ssize_t?len)? - Return value: New reference.
從包含指向 data 的 len 個(gè)字節(jié)的字節(jié)緩沖區(qū)對(duì)應(yīng)的數(shù)據(jù)流返回一個(gè) Python 對(duì)象。
發(fā)生錯(cuò)誤時(shí),將設(shè)置適當(dāng)?shù)漠惓?(
EOFError,ValueError或TypeError) 并返回NULL。
