Поддержка маршалинга данных
Эти функции позволяют коду на 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