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

wave.md

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

1> **Источник:** https://python-all.ru/3.1/library/wave.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# 21.4. `wave` – Чтение и запись WAV-файлов89Модуль `wave` предоставляет удобный интерфейс для работы со звуковым форматом WAV. Он не поддерживает сжатие/распаковку, но поддерживает моно и стерео.1011Модуль `wave` определяет следующие функцию и исключение:1213#### `wave.open(file, mode=None)`1415Если *file* – строка, открыть файл с этим именем, иначе считать его\\nфайлоподобным объектом с произвольным доступом. *mode* может быть одним из:1617**`'r'`, `'rb'`**1819Режим только для чтения.2021**`'w'`, `'wb'`**2223Режим только для записи.2425Обратите внимание: не поддерживаются WAV-файлы, открытые одновременно на чтение и запись.2627Режим *mode* со значением `'r'` или `'rb'` возвращает объект `Wave_read`, а\\nрежим *mode* со значением `'w'` или `'wb'` возвращает объект `Wave_write`. Если\\n*mode* не указан, а в качестве *file* передан файлоподобный объект, то\\n`file.mode` используется как значение по умолчанию для *mode* (флаг `'b'` всё равно добавляется при\\nнеобходимости).2829Если передаётся файлоподобный объект, волновой объект не закроет его при вызове метода `close()`; вызывающая сторона отвечает за закрытие файлового объекта.3031#### `wave.openfp(file, mode)`3233Синоним для3435[`open()`](https://python-all.ru/3.1/library/wave.html#wave.open)3637, сохранён для обратной совместимости.3839#### `exception wave.Error`4041Исключение, возникающее, когда какое-либо действие невозможно, поскольку оно нарушает спецификацию WAV или сталкивается с недостатком реализации.4243## 21.4.1. Объекты Wave\_read4445Объекты Wave\_read, возвращаемые функцией [`open()`](https://python-all.ru/3.1/library/wave.html#wave.open), имеют следующие методы:4647#### `Wave_read.close()`4849Закрывает поток, если он был открыт с помощью5051`wave`5253, и делает экземпляр непригодным для использования. Этот метод вызывается автоматически при сборке объекта.5455#### `Wave_read.getnchannels()`5657Возвращает количество аудиоканалов (5859`1`6061для моно,6263`2`6465для стерео).6667#### `Wave_read.getsampwidth()`6869Возвращает ширину выборки в байтах.7071#### `Wave_read.getframerate()`7273Возвращает частоту дискретизации.7475#### `Wave_read.getnframes()`7677Возвращает количество аудиофреймов.7879#### `Wave_read.getcomptype()`8081Возвращает тип сжатия (8283`'NONE'`8485– единственный поддерживаемый тип).8687#### `Wave_read.getcompname()`8889Человекочитаемая версия9091[`getcomptype()`](https://python-all.ru/3.1/library/wave.html#wave.Wave_read.getcomptype)9293. Обычно9495`'not compressed'`9697соответствует9899`'NONE'`100101.102103#### `Wave_read.getparams()`104105`(nchannels, sampwidth, framerate, nframes, comptype, compname)`106107, эквивалентен результату методов108109`get*()`110111.112113#### `Wave_read.readframes(n)`114115Читает и возвращает не более116117*n*118119фреймов аудио в виде строки байтов.120121#### `Wave_read.rewind()`122123Перемещает указатель файла в начало аудиопотока.124125Следующие два метода определены для совместимости с модулем [`aifc`](https://python-all.ru/3.1/library/aifc.html#module-aifc) и не делают ничего интересного.126127#### `Wave_read.getmarkers()`128129Возвращает130131`None`132133.134135#### `Wave_read.getmark(id)`136137Возбуждает исключение.138139Следующие два метода определяют термин «позиция», совместимый между ними, а в остальном зависящий от реализации.140141#### `Wave_read.setpos(pos)`142143Устанавливает указатель файла на указанную позицию.144145#### `Wave_read.tell()`146147Возвращает текущую позицию указателя файла.148149## 21.4.2. Объекты Wave\_write150151Объекты Wave\_write, возвращаемые функцией [`open()`](https://python-all.ru/3.1/library/wave.html#wave.open), имеют следующие методы:152153#### `Wave_write.close()`154155Убеждается, что156157*nframes*158159указано верно, и закрывает файл, если он был открыт модулем160161`wave`162163. Этот метод вызывается при сборке объекта.164165#### `Wave_write.setnchannels(n)`166167Устанавливает количество каналов.168169#### `Wave_write.setsampwidth(n)`170171Устанавливает ширину семпла равной172173*n*174175байт.176177#### `Wave_write.setframerate(n)`178179Устанавливает частоту дискретизации равной180181*n*182183.184185#### `Wave_write.setnframes(n)`186187Устанавливает количество фреймов в188189*n*190191. Это значение будет изменено позже, если будет записано больше фреймов.192193#### `Wave_write.setcomptype(type, name)`194195Устанавливает тип сжатия и описание. На данный момент поддерживается только тип сжатия196197`NONE`198199, что означает отсутствие сжатия.200201#### `Wave_write.setparams(tuple)`202203Кортеж204205*tuple*206207должен быть208209`(nchannels, sampwidth, framerate, nframes, comptype, compname)`210211, с допустимыми значениями для методов212213`set*()`214215. Устанавливает все параметры.216217#### `Wave_write.tell()`218219Возвращает текущую позицию в файле с теми же оговорками, что и методы220221[`Wave_read.tell()`](https://python-all.ru/3.1/library/wave.html#wave.Wave_read.tell)222223и224225[`Wave_read.setpos()`](https://python-all.ru/3.1/library/wave.html#wave.Wave_read.setpos)226227.228229#### `Wave_write.writeframesraw(data)`230231Записывает аудиокадры без коррекции232233*nframes*234235.236237#### `Wave_write.writeframes(data)`238239Записывает аудиокадры и проверяет, что240241*nframes*242243корректен.244245Обратите внимание, что задавать какие-либо параметры после вызова `writeframes()` или `writeframesraw()` недопустимо, и любая попытка сделать это вызовет [`wave.Error`](https://python-all.ru/3.1/library/wave.html#wave.Error).246