sunau.md
1> **Источник:** https://python-all.ru/3.0/library/sunau.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# `sunau` – чтение и запись файлов Sun AU89Модуль `sunau` предоставляет удобный интерфейс для звукового формата Sun AU. Обратите внимание, что этот модуль совместим по интерфейсу с модулями [`aifc`](https://python-all.ru/3.0/library/aifc.html#module-aifc) и [`wave`](https://python-all.ru/3.0/library/wave.html#module-wave).1011Аудиофайл состоит из заголовка, за которым следуют данные. Поля заголовка:1213| Поле | Содержание |14| --- | --- |15| магическое слово | Четыре байта `.snd`. |16| размер заголовка | Размер заголовка в байтах, включая поле info. |17| размер данных | Физический размер данных в байтах. |18| кодировка | Указывает, как закодированы аудиосэмплы. |19| частота дискретизации | Частота дискретизации. |20| количество каналов | Количество каналов в сэмплах. |21| информация | Строка ASCII с описанием аудиофайла (дополненная нулевыми байтами). |2223За исключением поля info, все поля заголовка имеют размер 4 байта. Все они являются 32-разрядными целыми числами без знака, закодированными в порядке байтов от старшего к младшему (big-endian).2425Модуль `sunau` определяет следующие функции:2627#### `[sunau.open]sunau.open(file, mode)`2829Если *file* – строка, открывается файл с этим именем; в противном случае он рассматривается как файлоподобный объект с произвольным доступом. *mode* может быть одним из следующих значений:3031**`'r'`**3233Режим только для чтения.3435**`'w'`**3637Режим только для записи.3839Обратите внимание: этот режим не поддерживает файлы, открытые одновременно на чтение и запись.4041Режим *mode* со значением `'r'` возвращает объект `AU_read`, а режим *mode* со значением `'w'` или `'wb'` возвращает объект `AU_write`.4243#### `[sunau.openfp]sunau.openfp(file, mode)`4445Синоним для4647[`open()`](https://python-all.ru/3.0/library/functions.html#open)4849, сохранён для обратной совместимости.5051Модуль `sunau` определяет следующее исключение:5253#### `[sunau.Error]exception sunau.Error`5455Исключение, возникающее, когда что-то невозможно из-за спецификаций Sun AU или недостатков реализации.5657Модуль `sunau` определяет следующие элементы данных:5859#### `[sunau.AUDIO_FILE_MAGIC]sunau.AUDIO_FILE_MAGIC`6061Целое число, с которого начинается любой корректный файл Sun AU, хранящееся в формате big-endian. Оно представляет собой строку6263`.snd`6465, интерпретированную как целое число.6667#### `[sunau.AUDIO_FILE_ENCODING_MULAW_8]sunau.AUDIO_FILE_ENCODING_MULAW_8`6869#### `sunau.AUDIO_FILE_ENCODING_LINEAR_8`7071#### `sunau.AUDIO_FILE_ENCODING_LINEAR_16`7273#### `sunau.AUDIO_FILE_ENCODING_LINEAR_24`7475#### `sunau.AUDIO_FILE_ENCODING_LINEAR_32`7677#### `sunau.AUDIO_FILE_ENCODING_ALAW_8`7879Значения поля encoding из заголовка AU, которые поддерживаются этим модулем.8081#### `[sunau.AUDIO_FILE_ENCODING_FLOAT]sunau.AUDIO_FILE_ENCODING_FLOAT`8283#### `sunau.AUDIO_FILE_ENCODING_DOUBLE`8485#### `sunau.AUDIO_FILE_ENCODING_ADPCM_G721`8687#### `sunau.AUDIO_FILE_ENCODING_ADPCM_G722`8889#### `sunau.AUDIO_FILE_ENCODING_ADPCM_G723_3`9091#### `sunau.AUDIO_FILE_ENCODING_ADPCM_G723_5`9293Дополнительные известные значения поля encoding из заголовка AU, которые не поддерживаются этим модулем.9495## Объекты AU\_read9697Объекты AU\_read, возвращаемые [`open()`](https://python-all.ru/3.0/library/functions.html#open) выше, имеют следующие методы:9899#### `[sunau.AU_read.close]AU_read.close()`100101Закрывает поток и делает экземпляр непригодным для использования. (Вызывается автоматически при удалении.)102103#### `[sunau.AU_read.getnchannels]AU_read.getnchannels()`104105Возвращает количество аудиоканалов (1 для моно, 2 для стерео).106107#### `[sunau.AU_read.getsampwidth]AU_read.getsampwidth()`108109Возвращает ширину выборки в байтах.110111#### `[sunau.AU_read.getframerate]AU_read.getframerate()`112113Возвращает частоту дискретизации.114115#### `[sunau.AU_read.getnframes]AU_read.getnframes()`116117Возвращает количество аудиофреймов.118119#### `[sunau.AU_read.getcomptype]AU_read.getcomptype()`120121Возвращает тип сжатия. Поддерживаемые типы сжатия:122123`'ULAW'`124125,126127`'ALAW'`128129и130131`'NONE'`132133.134135#### `[sunau.AU_read.getcompname]AU_read.getcompname()`136137Человекочитаемая версия138139[`getcomptype()`](https://python-all.ru/3.0/library/sunau.html#sunau.AU_read.getcomptype)140141. Поддерживаемые типы имеют соответствующие названия:142143`'CCITT G.711 u-law'`144145,146147`'CCITT G.711 A-law'`148149и150151`'not compressed'`152153.154155#### `[sunau.AU_read.getparams]AU_read.getparams()`156157`(nchannels, sampwidth, framerate, nframes, comptype, compname)`158159, эквивалентен результату методов160161`get*()`162163.164165#### `[sunau.AU_read.readframes]AU_read.readframes(n)`166167Читает и возвращает не более168169*n*170171кадров аудио в виде строки байтов. Данные возвращаются в линейном формате. Если исходные данные в формате u-LAW, они будут преобразованы.172173#### `[sunau.AU_read.rewind]AU_read.rewind()`174175Перемещает указатель файла в начало аудиопотока.176177Следующие два метода определяют термин «позиция», совместимый между ними, а в остальном зависящий от реализации.178179#### `[sunau.AU_read.setpos]AU_read.setpos(pos)`180181Устанавливает указатель файла на указанную позицию. Для182183*pos*184185следует использовать только значения, возвращённые из186187[`tell()`](https://python-all.ru/3.0/library/sunau.html#sunau.AU_read.tell)188189.190191#### `[sunau.AU_read.tell]AU_read.tell()`192193Возвращает текущую позицию указателя файла. Обратите внимание, что возвращаемое значение никак не связано с фактической позицией в файле.194195Следующие две функции определены для совместимости с [`aifc`](https://python-all.ru/3.0/library/aifc.html#module-aifc) и не делают ничего интересного.196197#### `[sunau.AU_read.getmarkers]AU_read.getmarkers()`198199Возвращает200201`None`202203.204205#### `[sunau.AU_read.getmark]AU_read.getmark(id)`206207Возбуждает исключение.208209## Объекты AU\_write210211Объекты AU\_write, возвращаемые [`open()`](https://python-all.ru/3.0/library/functions.html#open) выше, имеют следующие методы:212213#### `[sunau.AU_write.setnchannels]AU_write.setnchannels(n)`214215Устанавливает количество каналов.216217#### `[sunau.AU_write.setsampwidth]AU_write.setsampwidth(n)`218219Устанавливает ширину сэмпла (в байтах).220221#### `[sunau.AU_write.setframerate]AU_write.setframerate(n)`222223Устанавливает частоту кадров.224225#### `[sunau.AU_write.setnframes]AU_write.setnframes(n)`226227Устанавливает количество кадров. Это значение можно изменить позже, когда будет записано больше кадров .228229#### `[sunau.AU_write.setcomptype]AU_write.setcomptype(type, name)`230231Устанавливает тип сжатия и описание. При выводе поддерживаются только232233`'NONE'`234235и236237`'ULAW'`238239.240241#### `[sunau.AU_write.setparams]AU_write.setparams(tuple)`242243Кортеж244245*tuple*246247должен быть248249`(nchannels, sampwidth, framerate, nframes, comptype, compname)`250251, со значениями, допустимыми для методов252253`set*()`254255. Устанавливает все параметры.256257#### `[sunau.AU_write.tell]AU_write.tell()`258259Возвращает текущую позицию в файле, с тем же замечанием, что и для методов260261[`AU_read.tell()`](https://python-all.ru/3.0/library/sunau.html#sunau.AU_read.tell)262263и264265[`AU_read.setpos()`](https://python-all.ru/3.0/library/sunau.html#sunau.AU_read.setpos)266267.268269#### `[sunau.AU_write.writeframesraw]AU_write.writeframesraw(data)`270271Записывает аудиокадры без коррекции272273*nframes*274275.276277#### `[sunau.AU_write.writeframes]AU_write.writeframes(data)`278279Записывает аудиокадры и проверяет, что280281*nframes*282283корректен.284285#### `[sunau.AU_write.close]AU_write.close()`286287Проверяет, что *nframes* корректен, и закрывает файл.288289Этот метод вызывается при удалении.290291Обратите внимание, что устанавливать какие-либо параметры после вызова `writeframes()` или `writeframesraw()` недопустимо.292