Поддержка сериализации данных
Эти функции позволяют коду C работать с сериализованными объектами, используя тот же формат данных, что и модуль marshal. Существуют функции для записи данных в формат сериализации, а также дополнительные функции для считывания данных обратно. Файлы, используемые для хранения сериализованных данных, должны быть открыты в бинарном режиме.
Числовые значения хранятся с младшим байтом впереди.
Модуль поддерживает две версии формата данных: версия 0 — это историческая версия, версия 1 использует интернированные строки в файле и при десериализации. Версия 2 использует двоичный формат для чисел с плавающей точкой. Py_MARSHAL_VERSION указывает текущий формат файла (в настоящее время 2).
-
void PyMarshal_WriteLongToFile(long value, FILE *file, int version) -
Сериализация целого числа long, value, в файл file. Это запишет только 32 младших бита value; независимо от размера типа long в данной системе. version указывает формат файла.
Эта функция может завершиться ошибкой, в этом случае она устанавливает флаг ошибки. Используйте
PyErr_Occurred()для проверки этого.
-
void PyMarshal_WriteObjectToFile(PyObject *value, FILE *file, int version) -
Сериализация объекта Python, value, в файл file. version указывает формат файла.
Эта функция может завершиться ошибкой, в этом случае она устанавливает флаг ошибки. Используйте
PyErr_Occurred()для проверки этого.
-
PyObject *PyMarshal_WriteObjectToString(PyObject *value, int version) -
Возвращаемое значение: Новый указатель.
Возвращает объект bytes, содержащий сериализованное представление value. version указывает формат файла.
Следующие функции позволяют повторно считывать сериализованные значения.
-
long PyMarshal_ReadLongFromFile(FILE *file) -
Возвращает C long из потока данных в FILE*, открытом для чтения. С помощью этой функции можно считать только 32-битовое значение, независимо от размера long в данной системе.
При ошибке устанавливает соответствующее исключение (
EOFError) и возвращает-1.
-
int PyMarshal_ReadShortFromFile(FILE *file) -
Возвращает C short из потока данных в FILE*, открытом для чтения. С помощью этой функции можно считать только 16-битовое значение, независимо от размера short в данной системе.
При ошибке устанавливает соответствующее исключение (
EOFError) и возвращает-1.
-
PyObject *PyMarshal_ReadObjectFromFile(FILE *file) -
Возвращаемое значение: Новый указатель.
Возвращает объект Python из потока данных в FILE*, открытом для чтения.
При ошибке устанавливает соответствующее исключение (
EOFError,ValueErrorилиTypeError) и возвращаетNULL.
-
PyObject *PyMarshal_ReadLastObjectFromFile(FILE *file) -
Возвращаемое значение: Новый указатель.
Возвращает объект Python из потока данных в FILE*, открытом для чтения. В отличие от
PyMarshal_ReadObjectFromFile(), эта функция предполагает, что больше объектов из файла считываться не будут, что позволяет ей агрессивно загружать данные файла в память, чтобы десериализация могла работать с данными в памяти, а не читать байт за байтом из файла. Используйте эту функцию только если вы уверены, что больше ничего из файла считывать не будете.При ошибке устанавливает соответствующее исключение (
EOFError,ValueErrorилиTypeError) и возвращаетNULL.
-
PyObject *PyMarshal_ReadObjectFromString(const char *data, Py_ssize_t len) -
Возвращаемое значение: Новый указатель.
Возвращает объект Python из потока данных в буфере байтов, содержащем len байтов, указанных по адресу data.
При ошибке устанавливает соответствующее исключение (
EOFError,ValueErrorилиTypeError) и возвращаетNULL.
© 2001–2024 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.12/c-api/marshal.html