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 eller TypeError) och returnerar NULL.

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 eller TypeError) och returnerar NULL.

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 eller TypeError) och returnerar NULL.