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