例如,根據Python的資料,Marshal仍在解析輸入數據。Python中是否有比「marshal」或「cPickle」更低層的對象操作函數?
.....
case TYPE_FALSE:
Py_INCREF(Py_False);
retval = Py_False;
break;
case TYPE_TRUE:
Py_INCREF(Py_True);
retval = Py_True;
break;
case TYPE_INT:
retval = PyInt_FromLong(r_long(p));
break;
case TYPE_INT64:
retval = r_long64(p);
break;
case TYPE_LONG:
retval = r_PyLong(p);
break;
case TYPE_FLOAT:
.......
Python中是否有比「marshal」或「cPickle」更低層的對象操作函數?
舉例來說,我已經加載轉儲的數據到內存中,我只想類型轉換就像我們可以用C/C++做,(PyObject *) data_loaded_in_memory;
編輯:如果不能在Python直接完成,任何關於C函數的提示都可以寫出這個能力。
你能澄清數據如何能在內存中,但不會是一個Python對象,或味酸對象,等等? – agf
@agf,這可能是因爲可以直接鍵入強制轉換的PyObject或種類的泡菜對象,元帥對象或一些更原始轉儲。數據可以通過另一個C函數直接加載到內存中。 – YOU
我不認爲你可以只是把Python對象的內存映像,儲存,載入它在不同的解釋,甚至後,同樣的一個,並期望它是有意義的。它不會。換句話說,'cPickle'是儘可能低的層('CPickle'比'marshal'較低的水平,這是因爲後來維護版本和平臺之間的兼容性,這'cPickle'不)。 –