Документация Python неофициальный перевод

marshal.md

74 строк · 7.1 КБ · обычная страница · сырой текст · скачать

1> **Источник:** https://python-all.ru/3.14/c-api/marshal.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# Поддержка маршалинга данных89Эти процедуры позволяют коду на C работать с сериализованными объектами, используя тот же формат данных, что и модуль [`marshal`](https://python-all.ru/3.14/library/marshal.html#module-marshal). Есть функции для записи данных в формат сериализации и дополнительные функции для чтения данных обратно. Файлы, используемые для хранения маршалированных данных, должны быть открыты в двоичном режиме.1011Числовые значения хранятся с младшим байтом первым.1213Модуль поддерживает несколько версий формата данных; подробнее см. [`Python module documentation`](https://python-all.ru/3.14/library/marshal.html#module-marshal).1415#### `Py_MARSHAL_VERSION`1617Текущая версия формата. См. [`marshal.version`](https://python-all.ru/3.14/library/marshal.html#marshal.version).1819#### `void PyMarshal_WriteLongToFile(long value, FILE *file, int version)`2021Маршалирует целое число long, *value*, в *file*. Записываются только младшие 32 бита *value*, независимо от размера нативного типа long. *version* указывает формат файла.2223Эта функция может завершиться ошибкой, и в этом случае она устанавливает индикатор ошибки. Используйте [`PyErr_Occurred()`](https://python-all.ru/3.14/c-api/exceptions.html#c.PyErr_Occurred) для проверки.2425#### `void PyMarshal_WriteObjectToFile(PyObject *value, FILE *file, int version)`2627Маршалирует объект Python, *value*, в *file*. *version* указывает формат файла.2829Эта функция может завершиться ошибкой, и в этом случае она устанавливает индикатор ошибки. Используйте [`PyErr_Occurred()`](https://python-all.ru/3.14/c-api/exceptions.html#c.PyErr_Occurred) для проверки.3031#### `PyObject *PyMarshal_WriteObjectToString(PyObject *value, int version)`3233*Возвращаемое значение: новая ссылка.*3435Возвращает объект bytes, содержащий маршалированное представление *value*. *version* указывает формат файла.3637Следующие функции позволяют считывать маршалированные значения обратно.3839#### `long PyMarshal_ReadLongFromFile(FILE *file)`4041Возвращает C long из потока данных в FILE\*, открытого для чтения. С помощью этой функции можно прочитать только 32-битное значение, независимо от собственного размера long.4243В случае ошибки устанавливает соответствующее исключение ([`EOFError`](https://python-all.ru/3.14/library/exceptions.html#EOFError)) и возвращает `-1`.4445#### `int PyMarshal_ReadShortFromFile(FILE *file)`4647Возвращает C short из потока данных в FILE\*, открытого для чтения. С помощью этой функции можно прочитать только 16-битное значение, независимо от собственного размера short.4849В случае ошибки устанавливает соответствующее исключение ([`EOFError`](https://python-all.ru/3.14/library/exceptions.html#EOFError)) и возвращает `-1`.5051#### `PyObject *PyMarshal_ReadObjectFromFile(FILE *file)`5253*Возвращаемое значение: новая ссылка.*5455Возвращает объект Python из потока данных в FILE\*, открытом для чтения.5657В случае ошибки устанавливает соответствующее исключение ([`EOFError`](https://python-all.ru/3.14/library/exceptions.html#EOFError), [`ValueError`](https://python-all.ru/3.14/library/exceptions.html#ValueError) или [`TypeError`](https://python-all.ru/3.14/library/exceptions.html#TypeError)) и возвращает `NULL`.5859#### `PyObject *PyMarshal_ReadLastObjectFromFile(FILE *file)`6061*Возвращаемое значение: новая ссылка.*6263Возвращает объект Python из потока данных в FILE\*, открытом для чтения. В отличие от [`PyMarshal_ReadObjectFromFile()`](https://python-all.ru/3.14/c-api/marshal.html#c.PyMarshal_ReadObjectFromFile), эта функция предполагает, что из файла больше не будет считываться никаких объектов, что позволяет агрессивно загружать данные файла в память, чтобы десериализация могла работать с данными в памяти, а не читать по одному байту из файла. Используйте этот вариант, только если вы уверены, что из файла больше ничего не будет читаться.6465В случае ошибки устанавливает соответствующее исключение ([`EOFError`](https://python-all.ru/3.14/library/exceptions.html#EOFError), [`ValueError`](https://python-all.ru/3.14/library/exceptions.html#ValueError) или [`TypeError`](https://python-all.ru/3.14/library/exceptions.html#TypeError)) и возвращает `NULL`.6667#### `PyObject *PyMarshal_ReadObjectFromString(const char *data, Py_ssize_t len)`6869*Возвращаемое значение: новая ссылка.*7071Возвращает объект Python из потока данных в байтовом буфере, содержащем *len* байт, на которые указывает *data*.7273В случае ошибки устанавливает соответствующее исключение ([`EOFError`](https://python-all.ru/3.14/library/exceptions.html#EOFError), [`ValueError`](https://python-all.ru/3.14/library/exceptions.html#ValueError) или [`TypeError`](https://python-all.ru/3.14/library/exceptions.html#TypeError)) и возвращает `NULL`.74