Daten-Marshalling-Unterstützung¶
Diese Routinen ermöglichen es C-Code, mit serialisierten Objekten unter Verwendung desselben Datenformats wie das marshal-Modul zu arbeiten. Es gibt Funktionen zum Schreiben von Daten in das Serialisierungsformat und zusätzliche Funktionen, die zum Zurücklesen der Daten verwendet werden können. Zum Speichern von marshallten Daten verwendete Dateien müssen im Binärmodus geöffnet werden.
Numerische Werte werden mit dem am wenigsten signifikanten Byte zuerst gespeichert.
Das Modul unterstützt mehrere Versionen des Datenformats; siehe die Dokumentation des Python-Moduls für Details.
-
Py_MARSHAL_VERSION¶
Die aktuelle Formatversion. Siehe
marshal.version.
-
void PyMarshal_WriteLongToFile(long value, FILE *file, int version)¶
Marschalliert einen long-Integer, *value*, nach *file*. Dies schreibt nur die niederwertigsten 32 Bits von *value*; unabhängig von der Größe des nativen long-Typs. *version* gibt das Dateiformat an.
Diese Funktion kann fehlschlagen, in diesem Fall wird die Fehlermarkierung gesetzt. Verwenden Sie
PyErr_Occurred(), um dies zu überprüfen.
-
void PyMarshal_WriteObjectToFile(PyObject *value, FILE *file, int version)¶
Marschalliert ein Python-Objekt, *value*, nach *file*. *version* gibt das Dateiformat an.
Diese Funktion kann fehlschlagen, in diesem Fall wird die Fehlermarkierung gesetzt. Verwenden Sie
PyErr_Occurred(), um dies zu überprüfen.
-
PyObject *PyMarshal_WriteObjectToString(PyObject *value, int version)¶
- Rückgabewert: Neue Referenz.
Gibt ein Bytes-Objekt zurück, das die marshallierte Darstellung von *value* enthält. *version* gibt das Dateiformat an.
Die folgenden Funktionen ermöglichen das Zurücklesen von marshallten Werten.
-
long PyMarshal_ReadLongFromFile(FILE *file)¶
Gibt ein C long aus dem Datenstrom in einem zum Lesen geöffneten FILE* zurück. Nur ein 32-Bit-Wert kann mit dieser Funktion gelesen werden, unabhängig von der nativen Größe von long.
Bei einem Fehler wird die entsprechende Ausnahme gesetzt (
EOFError) und-1zurückgegeben.
-
int PyMarshal_ReadShortFromFile(FILE *file)¶
Gibt ein C short aus dem Datenstrom in einem zum Lesen geöffneten FILE* zurück. Nur ein 16-Bit-Wert kann mit dieser Funktion gelesen werden, unabhängig von der nativen Größe von short.
Bei einem Fehler wird die entsprechende Ausnahme gesetzt (
EOFError) und-1zurückgegeben.
-
PyObject *PyMarshal_ReadObjectFromFile(FILE *file)¶
- Rückgabewert: Neue Referenz.
Gibt ein Python-Objekt aus dem Datenstrom in einem zum Lesen geöffneten FILE* zurück.
Bei einem Fehler wird die entsprechende Ausnahme gesetzt (
EOFError,ValueErroroderTypeError) undNULLzurückgegeben.
-
PyObject *PyMarshal_ReadLastObjectFromFile(FILE *file)¶
- Rückgabewert: Neue Referenz.
Gibt ein Python-Objekt aus dem Datenstrom in einem zum Lesen geöffneten FILE* zurück. Im Gegensatz zu
PyMarshal_ReadObjectFromFile()geht diese Funktion davon aus, dass keine weiteren Objekte aus der Datei gelesen werden, was es ihr ermöglicht, Dateidaten aggressiv in den Speicher zu laden, damit die Deserialisierung aus Daten im Speicher erfolgen kann, anstatt byteweise aus der Datei zu lesen. Verwenden Sie diese Variante nur, wenn Sie sicher sind, dass Sie nichts weiter aus der Datei lesen werden.Bei einem Fehler wird die entsprechende Ausnahme gesetzt (
EOFError,ValueErroroderTypeError) undNULLzurückgegeben.
-
PyObject *PyMarshal_ReadObjectFromString(const char *data, Py_ssize_t len)¶
- Rückgabewert: Neue Referenz.
Gibt ein Python-Objekt aus dem Datenstrom in einem Puffer von *len* Bytes zurück, auf den *data* zeigt.
Bei einem Fehler wird die entsprechende Ausnahme gesetzt (
EOFError,ValueErroroderTypeError) undNULLzurückgegeben.