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

chunk.md

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

1> **Источник:** https://python-all.ru/3.8/library/chunk.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# [`chunk`](https://python-all.ru/3.8/library/chunk.html#module-chunk) – чтение данных IFF с блочной структурой89**Исходный код:** [Lib/chunk.py](https://python-all.ru/src/3.8/Lib/chunk.py)1011---1213Этот модуль предоставляет интерфейс для чтения файлов, использующих EA IFF 85 чанки. [1](https://python-all.ru/3.8/library/chunk.html#id2) Этот формат применяется, как минимум, в Audio Interchange File Format (AIFF/AIFF-C) и Real Media File Format (RMFF). Формат аудиофайлов WAVE тесно связан с ним и также может быть прочитан с помощью этого модуля.1415Чанк имеет следующую структуру:1617| Смещение | Длина | Содержание |18| --- | --- | --- |19| 0 | 4 | Идентификатор чанка |20| 4 | 4 | Размер чанка в порядке байтов big-endian, без учета заголовка |21| 8 | *n* | Байты данных, где *n* – размер, указанный в предыдущем поле |22| 8 + *n* | 0 или 1 | Байт заполнения, необходимый, если *n* нечётное и используется выравнивание чанков |2324Идентификатор представляет собой 4-байтовую строку, которая определяет тип чанка.2526Поле размера (32-битное значение, закодированное в порядке байтов big-endian) указывает размер данных чанка, не включая 8-байтовый заголовок.2728Обычно файл типа IFF состоит из одного или нескольких чанков. Предполагаемое использование класса [`Chunk`](https://python-all.ru/3.8/library/chunk.html#chunk.Chunk), определённого здесь, заключается в создании экземпляра в начале каждого чанка и чтении из него до достижения конца, после чего можно создать новый экземпляр. В конце файла создание нового экземпляра завершится ошибкой с исключением [`EOFError`](https://python-all.ru/3.8/library/exceptions.html#EOFError).2930#### `class chunk.Chunk(file, align=True, bigendian=True, inclheader=False)`3132Класс, представляющий чанк. Аргумент *file* должен быть файлоподобным объектом. Разрешено использовать экземпляр этого класса. Единственный необходимый метод – `read()`. Если методы [`seek()`](https://python-all.ru/3.8/library/io.html#io.IOBase.seek) и [`tell()`](https://python-all.ru/3.8/library/io.html#io.IOBase.tell) присутствуют и не вызывают исключений, они также применяются. Если эти методы присутствуют, но вызывают исключение, предполагается, что они не изменили объект. Если необязательный аргумент *align* равен true, считается, что чанки выровнены по 2-байтовым границам. Если *align* равен false, выравнивание не предполагается. Значение по умолчанию – true. Если необязательный аргумент *bigendian* равен false, размер чанка считается в порядке little-endian. Это необходимо для аудиофайлов WAVE. Значение по умолчанию – true. Если необязательный аргумент *inclheader* равен true, размер, указанный в заголовке чанка, включает размер заголовка. Значение по умолчанию – false.3334Объект [`Chunk`](https://python-all.ru/3.8/library/chunk.html#chunk.Chunk) поддерживает следующие методы:3536#### `getname()`3738Возвращает имя (идентификатор) чанка. Это первые 4 байта чанка.3940#### `getsize()`4142Возвращает размер чанка.4344#### `close()`4546Закрывает и пропускает до конца чанка. Это не закрывает нижележащий файл.4748Остальные методы будут вызывать [`OSError`](https://python-all.ru/3.8/library/exceptions.html#OSError), если были вызваны после вызова метода [`close()`](https://python-all.ru/3.8/library/chunk.html#chunk.Chunk.close). До Python 3.3 они вызывали [`IOError`](https://python-all.ru/3.8/library/exceptions.html#IOError), теперь это псевдоним [`OSError`](https://python-all.ru/3.8/library/exceptions.html#OSError).4950#### `isatty()`5152Возвращает `False`.5354#### `seek(pos, whence=0)`5556Устанавливает текущую позицию в чанке. Аргумент *whence* необязателен и по умолчанию равен `0` (абсолютное позиционирование в файле); другие значения – `1` (относительно текущей позиции) и `2` (относительно конца файла). Возвращаемого значения нет. Если нижележащий файл не поддерживает позиционирование, разрешён только переход вперёд.5758#### `tell()`5960Возвращает текущую позицию в чанке.6162#### `read(size=-1)`6364Читает не более *size* байт из чанка (меньше, если чтение достигает конца чанка до получения *size* байт). Если аргумент *size* отрицательный или опущен, читает все данные до конца чанка. Пустой объект bytes возвращается, если конец чанка встретился сразу.6566#### `skip()`6768Перейти к концу чанка. Все последующие вызовы [`read()`](https://python-all.ru/3.8/library/chunk.html#chunk.Chunk.read) для этого чанка будут возвращать `b''`. Если содержимое чанка не представляет интереса, следует вызвать этот метод, чтобы файл указывал на начало следующего чанка.6970Сноски7172**[1](https://python-all.ru/3.8/library/chunk.html#id1)**7374“EA IFF 85” – стандарт для файлов обменного формата, Jerry Morrison, Electronic Arts, январь 1985.75