chunk.md
1> **Источник:** https://python-all.ru/3.0/library/chunk.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# `chunk` – чтение данных IFF чанками89Этот модуль предоставляет интерфейс для чтения файлов, использующих EA IFF 85 чанки. [\[1\]](https://python-all.ru/3.0/library/chunk.html#id2) Этот формат применяется, как минимум, в Audio Interchange File Format (AIFF/AIFF-C) и Real Media File Format (RMFF). Формат аудиофайлов WAVE тесно связан с ним и также может быть прочитан с помощью этого модуля.1011Чанк имеет следующую структуру:1213| Смещение | Длина | Содержание |14| --- | --- | --- |15| 0 | 4 | Идентификатор чанка |16| 4 | 4 | Размер чанка в порядке байтов big-endian, без учета заголовка |17| 8 | *n* | Байты данных, где *n* – размер, указанный в предыдущем поле |18| 8 + *n* | 0 или 1 | Байт заполнения, необходимый, если *n* нечётное и используется выравнивание чанков |1920Идентификатор представляет собой 4-байтовую строку, которая определяет тип чанка.2122Поле размера (32-битное значение, закодированное в порядке байтов big-endian) указывает размер данных чанка, не включая 8-байтовый заголовок.2324Обычно файл типа IFF состоит из одного или нескольких чанков. Предлагаемое использование класса [`Chunk`](https://python-all.ru/3.0/library/chunk.html#chunk.Chunk), определённого здесь, заключается в создании экземпляра в начале каждого чанка и чтении из него до тех пор, пока он не закончится, после чего можно создать новый экземпляр. В конце файла создание нового экземпляра завершится исключением [`EOFError`](https://python-all.ru/3.0/library/exceptions.html#exceptions.EOFError).2526#### `[chunk.Chunk]class chunk.Chunk(file[, align, bigendian, inclheader])`2728Класс, представляющий чанк. Аргумент *file* должен быть файлоподобным объектом. Экземпляр этого класса разрешён. Единственный необходимый метод – [`read()`](https://python-all.ru/3.0/library/chunk.html#chunk.Chunk.read). Если присутствуют методы [`seek()`](https://python-all.ru/3.0/library/chunk.html#chunk.Chunk.seek) и [`tell()`](https://python-all.ru/3.0/library/chunk.html#chunk.Chunk.tell) и не вызывают исключений, они также используются. Если эти методы присутствуют, но вызывают исключение, предполагается, что они не изменили объект. Если необязательный аргумент *align* равен True, считается, что чанки выровнены по границам 2 байт. Если *align* равен False, выравнивание не предполагается. Значение по умолчанию – True. Если необязательный аргумент *bigendian* равен False, размер чанка считается записанным в порядке little-endian. Это необходимо для аудиофайлов WAVE. Значение по умолчанию – True. Если необязательный аргумент *inclheader* равен True, размер, указанный в заголовке чанка, включает размер заголовка. Значение по умолчанию – False.2930Объект [`Chunk`](https://python-all.ru/3.0/library/chunk.html#chunk.Chunk) поддерживает следующие методы:3132#### `[chunk.Chunk.getname]getname()`3334Возвращает имя (идентификатор) чанка. Это первые 4 байта чанка.3536#### `[chunk.Chunk.getsize]getsize()`3738Возвращает размер чанка.3940#### `[chunk.Chunk.close]close()`4142Закрывает и пропускает до конца чанка. Это не закрывает нижележащий файл.4344Остальные методы будут возбуждать [`IOError`](https://python-all.ru/3.0/library/exceptions.html#exceptions.IOError), если они вызваны после вызова метода [`close()`](https://python-all.ru/3.0/library/chunk.html#chunk.Chunk.close).4546#### `[chunk.Chunk.isatty]isatty()`4748Возвращает4950`False`5152.5354#### `[chunk.Chunk.seek]seek(pos[, whence])`5556Устанавливает текущую позицию в чанке. Аргумент5758*whence*5960необязателен и по умолчанию равен6162`0`6364(абсолютное позиционирование в файле); другие значения –6566`1`6768(относительно текущей позиции) и6970`2`7172(относительно конца файла). Возвращаемого значения нет. Если нижележащий файл не поддерживает позиционирование, разрешён только переход вперёд.7374#### `[chunk.Chunk.tell]tell()`7576Возвращает текущую позицию в чанке.7778#### `[chunk.Chunk.read]read([size])`7980Читает не более8182*size*8384байт из чанка (меньше, если чтение достигает конца чанка до получения8586*size*8788байт). Если аргумент8990*size*9192отрицателен или опущен, читает все данные до конца чанка. Байты возвращаются в виде строкового объекта. Пустая строка возвращается, если конец чанка встречен сразу.9394#### `[chunk.Chunk.skip]skip()`9596Переходит к концу чанка. Все последующие вызовы9798[`read()`](https://python-all.ru/3.0/library/chunk.html#chunk.Chunk.read)99100для этого чанка будут возвращать101102`''`103104. Если содержимое чанка не нужно, следует вызвать этот метод, чтобы файл указывал на начало следующего чанка.105106Сноски107108| [\[1\]](https://python-all.ru/3.0/library/chunk.html#id1) | “EA IFF 85” – стандарт для файлов обменного формата, Jerry Morrison, Electronic Arts, январь 1985. |109| --- | --- |110