sunau.md
1> **Источник:** https://python-all.ru/3.7/library/sunau.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# [`sunau`](https://python-all.ru/3.7/library/sunau.html#module-sunau) – чтение и запись файлов Sun AU89**Исходный код:** [Lib/sunau.py](https://python-all.ru/src/3.7/Lib/sunau.py)1011---1213Модуль [`sunau`](https://python-all.ru/3.7/library/sunau.html#module-sunau) предоставляет удобный интерфейс для звукового формата Sun AU. Обратите внимание, что этот модуль совместим по интерфейсу с модулями [`aifc`](https://python-all.ru/3.7/library/aifc.html#module-aifc) и [`wave`](https://python-all.ru/3.7/library/wave.html#module-wave).1415Аудиофайл состоит из заголовка, за которым следуют данные. Поля заголовка:1617| Поле | Содержание |18| --- | --- |19| магическое слово | Четыре байта `.snd`. |20| размер заголовка | Размер заголовка в байтах, включая поле info. |21| размер данных | Физический размер данных в байтах. |22| кодировка | Указывает, как закодированы аудиосэмплы. |23| частота дискретизации | Частота дискретизации. |24| количество каналов | Количество каналов в сэмплах. |25| информация | Строка ASCII с описанием аудиофайла (дополненная нулевыми байтами). |2627За исключением поля info, все поля заголовка имеют размер 4 байта. Все они являются 32-разрядными целыми числами без знака, закодированными в порядке байтов от старшего к младшему (big-endian).2829Модуль [`sunau`](https://python-all.ru/3.7/library/sunau.html#module-sunau) определяет следующие функции:3031#### `sunau.open(file, mode)`3233Если *file* – строка, открывается файл с этим именем; в противном случае он рассматривается как файлоподобный объект с произвольным доступом. *mode* может быть одним из следующих значений:3435**`'r'`**3637Режим только для чтения.3839**`'w'`**4041Режим только для записи.4243Обратите внимание: этот режим не поддерживает файлы, открытые одновременно на чтение и запись.4445Режим *mode* `'r'` возвращает объект `AU_read`, а режим *mode* `'w'` или `'wb'` возвращает объект `AU_write`.4647#### `sunau.openfp(file, mode)`4849Синоним для [`open()`](https://python-all.ru/3.7/library/sunau.html#sunau.open), поддерживаемый для обратной совместимости.5051Устарело с версии 3.7, будет удалено в версии 3.9.5253Модуль [`sunau`](https://python-all.ru/3.7/library/sunau.html#module-sunau) определяет следующее исключение:5455#### `exception sunau.Error`5657Исключение, возникающее, когда что-то невозможно из-за спецификаций Sun AU или недостатков реализации.5859Модуль [`sunau`](https://python-all.ru/3.7/library/sunau.html#module-sunau) определяет следующие элементы данных:6061#### `sunau.AUDIO_FILE_MAGIC`6263Целое число, с которого начинается любой корректный файл Sun AU, хранящееся в формате big-endian. Это строка `.snd`, интерпретируемая как целое число.6465#### `sunau.AUDIO_FILE_ENCODING_MULAW_8`6667#### `sunau.AUDIO_FILE_ENCODING_LINEAR_8`6869#### `sunau.AUDIO_FILE_ENCODING_LINEAR_16`7071#### `sunau.AUDIO_FILE_ENCODING_LINEAR_24`7273#### `sunau.AUDIO_FILE_ENCODING_LINEAR_32`7475#### `sunau.AUDIO_FILE_ENCODING_ALAW_8`7677Значения поля encoding из заголовка AU, которые поддерживаются этим модулем.7879#### `sunau.AUDIO_FILE_ENCODING_FLOAT`8081#### `sunau.AUDIO_FILE_ENCODING_DOUBLE`8283#### `sunau.AUDIO_FILE_ENCODING_ADPCM_G721`8485#### `sunau.AUDIO_FILE_ENCODING_ADPCM_G722`8687#### `sunau.AUDIO_FILE_ENCODING_ADPCM_G723_3`8889#### `sunau.AUDIO_FILE_ENCODING_ADPCM_G723_5`9091Дополнительные известные значения поля encoding из заголовка AU, которые не поддерживаются этим модулем.9293## Объекты AU\_read9495Объекты AU\_read, возвращаемые [`open()`](https://python-all.ru/3.7/library/sunau.html#sunau.open) выше, имеют следующие методы:9697#### `AU_read.close()`9899Закрывает поток и делает экземпляр непригодным для использования. (Вызывается автоматически при удалении.)100101#### `AU_read.getnchannels()`102103Возвращает количество аудиоканалов (1 для моно, 2 для стерео).104105#### `AU_read.getsampwidth()`106107Возвращает ширину выборки в байтах.108109#### `AU_read.getframerate()`110111Возвращает частоту дискретизации.112113#### `AU_read.getnframes()`114115Возвращает количество аудиофреймов.116117#### `AU_read.getcomptype()`118119Возвращает тип сжатия. Поддерживаемые типы сжатия: `'ULAW'`, `'ALAW'` и `'NONE'`.120121#### `AU_read.getcompname()`122123Человекочитаемая версия [`getcomptype()`](https://python-all.ru/3.7/library/sunau.html#sunau.AU_read.getcomptype). Поддерживаемые типы имеют соответствующие названия `'CCITT G.711 u-law'`, `'CCITT G.711 A-law'` и `'not compressed'`.124125#### `AU_read.getparams()`126127Возвращает [`namedtuple()`](https://python-all.ru/3.7/library/collections.html#collections.namedtuple) `(nchannels, sampwidth, framerate, nframes, comptype, compname)`, эквивалентный результату методов `get*()`.128129#### `AU_read.readframes(n)`130131Читает и возвращает не более *n* кадров аудио в виде объекта [`bytes`](https://python-all.ru/3.7/library/stdtypes.html#bytes). Данные будут возвращены в линейном формате. Если исходные данные в формате u-LAW, они будут преобразованы.132133#### `AU_read.rewind()`134135Перемещает указатель файла в начало аудиопотока.136137Следующие два метода определяют термин «позиция», совместимый между ними, а в остальном зависящий от реализации.138139#### `AU_read.setpos(pos)`140141Устанавливает указатель файла на указанную позицию. Для *pos* следует использовать только значения, возвращаемые [`tell()`](https://python-all.ru/3.7/library/sunau.html#sunau.AU_read.tell).142143#### `AU_read.tell()`144145Возвращает текущую позицию указателя файла. Обратите внимание, что возвращаемое значение никак не связано с фактической позицией в файле.146147Следующие две функции определены для совместимости с [`aifc`](https://python-all.ru/3.7/library/aifc.html#module-aifc) и не делают ничего интересного.148149#### `AU_read.getmarkers()`150151Возвращает `None`.152153#### `AU_read.getmark(id)`154155Возбуждает исключение.156157## Объекты AU\_write158159Объекты AU\_write, возвращаемые [`open()`](https://python-all.ru/3.7/library/sunau.html#sunau.open) выше, имеют следующие методы:160161#### `AU_write.setnchannels(n)`162163Устанавливает количество каналов.164165#### `AU_write.setsampwidth(n)`166167Устанавливает ширину сэмпла (в байтах).168169Изменено в версии 3.4: Добавлена поддержка 24-битных сэмплов.170171#### `AU_write.setframerate(n)`172173Устанавливает частоту кадров.174175#### `AU_write.setnframes(n)`176177Устанавливает количество кадров. Это значение можно изменить позже, когда будет записано больше кадров .178179#### `AU_write.setcomptype(type, name)`180181Устанавливает тип сжатия и описание. На выходе поддерживаются только `'NONE'` и `'ULAW'` .182183#### `AU_write.setparams(tuple)`184185*tuple* должен быть `(nchannels, sampwidth, framerate, nframes, comptype, compname)`, со значениями, допустимыми для методов `set*()`. Устанавливает все параметры.186187#### `AU_write.tell()`188189Возвращает текущую позицию в файле с теми же оговорками, что и для методов [`AU_read.tell()`](https://python-all.ru/3.7/library/sunau.html#sunau.AU_read.tell) и [`AU_read.setpos()`](https://python-all.ru/3.7/library/sunau.html#sunau.AU_read.setpos).190191#### `AU_write.writeframesraw(data)`192193Записывает аудиокадры без коррекции *nframes*.194195Изменено в версии 3.4: Теперь принимается любой [байтоподобный объект](https://python-all.ru/3.7/glossary.html#term-bytes-like-object).196197#### `AU_write.writeframes(data)`198199Записывает аудиокадры и проверяет, что *nframes* корректен.200201Изменено в версии 3.4: Теперь принимается любой [байтоподобный объект](https://python-all.ru/3.7/glossary.html#term-bytes-like-object).202203#### `AU_write.close()`204205Проверяет, что *nframes* корректен, и закрывает файл.206207Этот метод вызывается при удалении.208209Обратите внимание, что установка любых параметров после вызова `writeframes()` или `writeframesraw()` недопустима.210