Поддержка сортировки данных¶
Эти процедуры позволяют коду на C работать с сериализованными объектами, используя тот же формат данных, что и модуль marshal
. Существуют функции для записи данных в формат сериализации и дополнительные функции, которые можно использовать для обратного считывания данных. Файлы, используемые для хранения упорядоченных данных, должны быть открыты в двоичном режиме.
Числовые значения сохраняются, начиная с младшего по значению байта.
Модуль поддерживает две версии формата данных: версия 0 - это историческая версия, версия 1 использует встроенные строки в файле и при отмене обмена данными. Версия 2 использует двоичный формат для чисел с плавающей запятой. Py_MARSHAL_VERSION
указывает текущий формат файла (на данный момент 2).
-
void PyMarshal_WriteLongToFile(long value, FILE *file, int version)¶
Преобразуйте a long целое число, значение, в файл. При этом будут записаны только младшие 32 бита из значения; независимо от размера исходного типа long. версия указывает формат файла.
Эта функция может не работать, и в этом случае она выдает индикатор ошибки. Используйте
PyErr_Occurred()
, чтобы проверить это.
-
void PyMarshal_WriteObjectToFile(PyObject *value, FILE *file, int version)¶
Преобразуйте объект Python, value, в file. версия указывает формат файла.
Эта функция может не работать, и в этом случае она выдает индикатор ошибки. Используйте
PyErr_Occurred()
, чтобы проверить это.
-
PyObject *PyMarshal_WriteObjectToString(PyObject *value, int version)¶
- Возвращаемое значение: Новая ссылка.
Возвращает объект bytes, содержащий упорядоченное представление value. version указывает формат файла.
Следующие функции позволяют считывать обратно упорядоченные значения.
-
long PyMarshal_ReadLongFromFile(FILE *file)¶
Возвращает C long из потока данных в a FILE*, открытого для чтения. При использовании этой функции можно считывать только 32-разрядное значение, независимо от исходного размера long.
В случае ошибки устанавливает соответствующее исключение (
EOFError
) и возвращает-1
.
-
int PyMarshal_ReadShortFromFile(FILE *file)¶
Возвращает C short из потока данных в a FILE*, открытого для чтения. При использовании этой функции можно считывать только 16-разрядное значение, независимо от исходного размера short.
В случае ошибки устанавливает соответствующее исключение (
EOFError
) и возвращает-1
.
-
PyObject *PyMarshal_ReadObjectFromFile(FILE *file)¶
- Возвращаемое значение: Новая ссылка.
Возвращает объект Python из потока данных в a FILE*, открытый для чтения.
В случае ошибки устанавливает соответствующее исключение (
EOFError
,ValueError
илиTypeError
) и возвращаетNULL
.
-
PyObject *PyMarshal_ReadLastObjectFromFile(FILE *file)¶
- Возвращаемое значение: Новая ссылка.
Возвращает объект Python из потока данных в a FILE*, открытый для чтения. В отличие от
PyMarshal_ReadObjectFromFile()
, эта функция предполагает, что никакие другие объекты не будут считываться из файла, что позволяет ей активно загружать данные файла в память, чтобы десериализация могла выполняться из данных в памяти, а не считывать байт за байтом из файла за раз. Используйте этот вариант только в том случае, если вы уверены, что больше ничего не будете читать из файла.В случае ошибки устанавливает соответствующее исключение (
EOFError
,ValueError
илиTypeError
) и возвращаетNULL
.
-
PyObject *PyMarshal_ReadObjectFromString(const char *data, Py_ssize_t len)¶
- Возвращаемое значение: Новая ссылка.
Возвращает объект Python из потока данных в байтовом буфере, содержащем len байты, на которые указывает data.
В случае ошибки устанавливает соответствующее исключение (
EOFError
,ValueError
илиTypeError
) и возвращаетNULL
.