Stöd för datahantering¶
Dessa rutiner gör det möjligt för C-kod att arbeta med serialiserade objekt som använder samma dataformat som modulen marshal
. Det finns funktioner för att skriva data till serialiseringsformatet och ytterligare funktioner som kan användas för att läsa tillbaka data. Filer som används för att lagra marshallade data måste öppnas i binärt läge.
Numeriska värden lagras med den minst signifikanta byten först.
Modulen stöder flera versioner av dataformatet; se Python-modulens dokumentation
för mer information.
-
Py_MARSHAL_VERSION¶
Den aktuella formatversionen. Se
marshal.version
.
-
void PyMarshal_WriteLongToFile(long value, FILE *file, int version)¶
Marshala ett long heltal, värde, till fil. Detta kommer endast att skriva de minst signifikanta 32 bitarna av värde; oavsett storleken på den ursprungliga long-typen. version anger filformatet.
Den här funktionen kan misslyckas, i vilket fall den anger felindikatorn. Använd
PyErr_Occurred()
för att kontrollera detta.
-
void PyMarshal_WriteObjectToFile(PyObject *value, FILE *file, int version)¶
Överför ett Python-objekt, värde, till fil. version anger filformatet.
Den här funktionen kan misslyckas, i vilket fall den anger felindikatorn. Använd
PyErr_Occurred()
för att kontrollera detta.
-
PyObject *PyMarshal_WriteObjectToString(PyObject *value, int version)¶
- Returnera värde: Ny referens.
Returnerar ett bytesobjekt som innehåller den marshallade representationen av värde. version anger filformatet.
Följande funktioner gör det möjligt att läsa in marshallade värden igen.
-
long PyMarshal_ReadLongFromFile(FILE *file)¶
Returnerar ett C long från dataströmmen i en FILE* som öppnats för läsning. Endast ett 32-bitars värde kan läsas in med den här funktionen, oavsett den ursprungliga storleken på long.
Vid fel, anger lämpligt undantag (
EOFError
) och returnerar-1
.
-
int PyMarshal_ReadShortFromFile(FILE *file)¶
Returnerar ett C short från dataströmmen i en FILE* som öppnats för läsning. Endast ett 16-bitars värde kan läsas in med den här funktionen, oavsett den ursprungliga storleken på short.
Vid fel, anger lämpligt undantag (
EOFError
) och returnerar-1
.
-
PyObject *PyMarshal_ReadObjectFromFile(FILE *file)¶
- Returnera värde: Ny referens.
Returnerar ett Python-objekt från dataströmmen i en FILE* som öppnats för läsning.
Vid fel, anger lämpligt undantag (
EOFError
,ValueError
ellerTypeError
) och returnerarNULL
.
-
PyObject *PyMarshal_ReadLastObjectFromFile(FILE *file)¶
- Returnera värde: Ny referens.
Returnerar ett Python-objekt från dataströmmen i en FILE* som öppnats för läsning. Till skillnad från
PyMarshal_ReadObjectFromFile()
antar denna funktion att inga fler objekt kommer att läsas från filen, vilket gör det möjligt att aggressivt ladda fildata i minnet så att de-serialiseringen kan fungera från data i minnet snarare än att läsa en byte i taget från filen. Använd endast denna variant om du är säker på att du inte kommer att läsa något annat från filen.Vid fel, anger lämpligt undantag (
EOFError
,ValueError
ellerTypeError
) och returnerarNULL
.
-
PyObject *PyMarshal_ReadObjectFromString(const char *data, Py_ssize_t len)¶
- Returnera värde: Ny referens.
Returnerar ett Python-objekt från dataströmmen i en bytebuffert som innehåller len bytes som pekas ut av data.
Vid fel, anger lämpligt undantag (
EOFError
,ValueError
ellerTypeError
) och returnerarNULL
.