Spec-Zone.ru › Python 3.11

Поддержка сериализации данных

Эти функции позволяют коду 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–2023 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.11/c-api/marshal.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API