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

sunau.md

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

1> **Источник:** https://python-all.ru/3.2/library/sunau.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# 21.3. [`sunau`](https://python-all.ru/3.2/library/sunau.html#module-sunau) – чтение и запись файлов Sun AU89**Исходный код:** [Lib/sunau.py](https://python-all.ru/src/3.2/Lib/sunau.py)1011---1213Модуль [`sunau`](https://python-all.ru/3.2/library/sunau.html#module-sunau) предоставляет удобный интерфейс для работы со звуковым форматом Sun AU. Обратите внимание, что этот модуль совместим по интерфейсу с модулями [`aifc`](https://python-all.ru/3.2/library/aifc.html#module-aifc) и [`wave`](https://python-all.ru/3.2/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.2/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.2/library/sunau.html#sunau.open), сохранён для обратной совместимости.5051Модуль [`sunau`](https://python-all.ru/3.2/library/sunau.html#module-sunau) определяет следующее исключение:5253#### `exception sunau.Error`5455Исключение, возникающее, когда что-то невозможно из-за спецификаций Sun AU или недостатков реализации.5657Модуль [`sunau`](https://python-all.ru/3.2/library/sunau.html#module-sunau) определяет следующие элементы данных:5859#### `sunau.AUDIO_FILE_MAGIC`6061Целое число, с которого начинается любой корректный файл Sun AU, хранящееся в формате big-endian. Оно представляет собой строку `.snd`, интерпретированную как целое число.6263#### `sunau.AUDIO_FILE_ENCODING_MULAW_8`6465#### `sunau.AUDIO_FILE_ENCODING_LINEAR_8`6667#### `sunau.AUDIO_FILE_ENCODING_LINEAR_16`6869#### `sunau.AUDIO_FILE_ENCODING_LINEAR_24`7071#### `sunau.AUDIO_FILE_ENCODING_LINEAR_32`7273#### `sunau.AUDIO_FILE_ENCODING_ALAW_8`7475Значения поля encoding из заголовка AU, которые поддерживаются этим модулем.7677#### `sunau.AUDIO_FILE_ENCODING_FLOAT`7879#### `sunau.AUDIO_FILE_ENCODING_DOUBLE`8081#### `sunau.AUDIO_FILE_ENCODING_ADPCM_G721`8283#### `sunau.AUDIO_FILE_ENCODING_ADPCM_G722`8485#### `sunau.AUDIO_FILE_ENCODING_ADPCM_G723_3`8687#### `sunau.AUDIO_FILE_ENCODING_ADPCM_G723_5`8889Дополнительные известные значения поля encoding из заголовка AU, которые не поддерживаются этим модулем.9091## 21.3.1. Объекты AU\_read9293Объекты AU\_read, возвращаемые [`open()`](https://python-all.ru/3.2/library/sunau.html#sunau.open) выше, имеют следующие методы:9495#### `AU_read.close()`9697Закрывает поток и делает экземпляр непригодным для использования. (Вызывается автоматически при удалении.)9899#### `AU_read.getnchannels()`100101Возвращает количество аудиоканалов (1 для моно, 2 для стерео).102103#### `AU_read.getsampwidth()`104105Возвращает ширину выборки в байтах.106107#### `AU_read.getframerate()`108109Возвращает частоту дискретизации.110111#### `AU_read.getnframes()`112113Возвращает количество аудиофреймов.114115#### `AU_read.getcomptype()`116117Возвращает тип сжатия. Поддерживаемые типы сжатия: `'ULAW'`, `'ALAW'` и `'NONE'`.118119#### `AU_read.getcompname()`120121Человекочитаемая версия [`getcomptype()`](https://python-all.ru/3.2/library/sunau.html#sunau.AU_read.getcomptype). Поддерживаемые типы имеют соответствующие названия: `'CCITT G.711 u-law'`, `'CCITT G.711 A-law'` и `'not compressed'`.122123#### `AU_read.getparams()`124125`(nchannels, sampwidth, framerate, nframes, comptype, compname)`, эквивалентен результату методов `get*()`.126127#### `AU_read.readframes(n)`128129Читает и возвращает не более *n* кадров аудио в виде строки байтов. Данные возвращаются в линейном формате. Если исходные данные в формате u-LAW, они будут преобразованы.130131#### `AU_read.rewind()`132133Перемещает указатель файла в начало аудиопотока.134135Следующие два метода определяют термин «позиция», совместимый между ними, а в остальном зависящий от реализации.136137#### `AU_read.setpos(pos)`138139Устанавливает указатель файла на указанную позицию. Для *pos* следует использовать только значения, возвращённые из [`tell()`](https://python-all.ru/3.2/library/sunau.html#sunau.AU_read.tell).140141#### `AU_read.tell()`142143Возвращает текущую позицию указателя файла. Обратите внимание, что возвращаемое значение никак не связано с фактической позицией в файле.144145Следующие две функции определены для совместимости с [`aifc`](https://python-all.ru/3.2/library/aifc.html#module-aifc) и не делают ничего интересного.146147#### `AU_read.getmarkers()`148149Возвращает `None`.150151#### `AU_read.getmark(id)`152153Возбуждает исключение.154155## 21.3.2. Объекты AU\_write156157Объекты AU\_write, возвращаемые [`open()`](https://python-all.ru/3.2/library/sunau.html#sunau.open) выше, имеют следующие методы:158159#### `AU_write.setnchannels(n)`160161Устанавливает количество каналов.162163#### `AU_write.setsampwidth(n)`164165Устанавливает ширину сэмпла (в байтах).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.2/library/sunau.html#sunau.AU_read.tell) и [`AU_read.setpos()`](https://python-all.ru/3.2/library/sunau.html#sunau.AU_read.setpos).186187#### `AU_write.writeframesraw(data)`188189Записывает аудиокадры без коррекции *nframes*.190191#### `AU_write.writeframes(data)`192193Записывает аудиокадры и проверяет, что *nframes* корректен.194195#### `AU_write.close()`196197Проверяет, что *nframes* корректен, и закрывает файл.198199Этот метод вызывается при удалении.200201Обратите внимание, что устанавливать какие-либо параметры после вызова `writeframes()` или `writeframesraw()` недопустимо.202