Поддержка сортировки данных¶
Данные процедуры позволяют 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 указывает формат файла.
-
void
PyMarshal_WriteObjectToFile
(PyObject *value, FILE *file, int version)¶ Маршалировать объект Python с value до file. version указывает формат файла.
-
PyObject*
PyMarshal_WriteObjectToString
(PyObject *value, int version)¶ - Return value: New reference.
Возвращает объект байтов, содержащий упорядоченное представление 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)¶ - Return value: New reference.
Возвращает объект Python из потока данных в
FILE*
, открытом для чтения.При ошибке устанавливает соответствующее исключение (
EOFError
,ValueError
илиTypeError
) и возвращаетNULL
.
-
PyObject*
PyMarshal_ReadLastObjectFromFile
(FILE *file)¶ - Return value: New reference.
Возвращает объект Python из потока данных в
FILE*
, открытом для чтения. В отличие отPyMarshal_ReadObjectFromFile()
, эта функция предполагает, что никакие другие объекты не будут считываться из файла, что позволяет ей агрессивно загружать данные файла в память, чтобы десериализация могла работать с данными в памяти, а не считывать по байту из файла. Использовать данный вариант только в том случае, если вы уверены, что больше ничего не читаете из файла.При ошибке устанавливает соответствующее исключение (
EOFError
,ValueError
илиTypeError
) и возвращаетNULL
.
-
PyObject*
PyMarshal_ReadObjectFromString
(const char *data, Py_ssize_t len)¶ - Return value: New reference.
Возвращает объект Python из потока данных в байтовом буфере, содержащем len байтов, на которые указывает data.
При ошибке устанавливает соответствующее исключение (
EOFError
,ValueError
илиTypeError
) и возвращаетNULL
.