Spec-Zone.ru › Python 3.13

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

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

Spec-Zone.ru

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