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

wave.md

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

1> **Источник:** https://python-all.ru/3.3/library/wave.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# 22.4. [`wave`](https://python-all.ru/3.3/library/wave.html#module-wave) – Чтение и запись WAV-файлов89**Исходный код:** [Lib/wave.py](https://python-all.ru/src/3.3/Lib/wave.py)1011---1213Модуль [`wave`](https://python-all.ru/3.3/library/wave.html#module-wave) предоставляет удобный интерфейс для работы со звуковым форматом WAV. Он не поддерживает сжатие/распаковку, но поддерживает моно/стерео.1415Модуль [`wave`](https://python-all.ru/3.3/library/wave.html#module-wave) определяет следующие функцию и исключение:1617#### `wave.open(file, mode=None)`1819Если *file* – строка, открыть файл с этим именем, иначе считать его\\nфайлоподобным объектом с произвольным доступом. *mode* может быть одним из:2021**`'r'`, `'rb'`**2223Режим только для чтения.2425**`'w'`, `'wb'`**2627Режим только для записи.2829Обратите внимание: не поддерживаются WAV-файлы, открытые одновременно на чтение и запись.3031Режим *mode* со значением `'r'` или `'rb'` возвращает объект `Wave_read`, а\\nрежим *mode* со значением `'w'` или `'wb'` возвращает объект `Wave_write`. Если\\n*mode* не указан, а в качестве *file* передан файлоподобный объект, то\\n`file.mode` используется как значение по умолчанию для *mode* (флаг `'b'` всё равно добавляется при\\nнеобходимости).3233Если передаётся файлоподобный объект, волновой объект не закроет его при вызове метода `close()`; вызывающая сторона отвечает за закрытие файлового объекта.3435#### `wave.openfp(file, mode)`3637Синоним для [`open()`](https://python-all.ru/3.3/library/wave.html#wave.open), сохранён для обратной совместимости.3839#### `exception wave.Error`4041Исключение, возникающее, когда какое-либо действие невозможно, поскольку оно нарушает спецификацию WAV или сталкивается с недостатком реализации.4243## 22.4.1. Объекты Wave\_read4445Объекты Wave\_read, возвращаемые функцией [`open()`](https://python-all.ru/3.3/library/wave.html#wave.open), имеют следующие методы:4647#### `Wave_read.close()`4849Закрывает поток, если он был открыт модулем [`wave`](https://python-all.ru/3.3/library/wave.html#module-wave), и делает экземпляр непригодным для использования. Этот метод вызывается автоматически при сборке объекта.5051#### `Wave_read.getnchannels()`5253Возвращает количество аудиоканалов (`1` для моно, `2` для стерео).5455#### `Wave_read.getsampwidth()`5657Возвращает ширину выборки в байтах.5859#### `Wave_read.getframerate()`6061Возвращает частоту дискретизации.6263#### `Wave_read.getnframes()`6465Возвращает количество аудиофреймов.6667#### `Wave_read.getcomptype()`6869Возвращает тип сжатия (`'NONE'` – единственный поддерживаемый тип).7071#### `Wave_read.getcompname()`7273Человекочитаемая версия [`getcomptype()`](https://python-all.ru/3.3/library/wave.html#wave.Wave_read.getcomptype). Обычно `'not compressed'` соответствует `'NONE'`.7475#### `Wave_read.getparams()`7677`(nchannels, sampwidth, framerate, nframes, comptype, compname)`, эквивалентен результату методов `get*()`.7879#### `Wave_read.readframes(n)`8081Читает и возвращает не более *n* фреймов аудио в виде строки байтов.8283#### `Wave_read.rewind()`8485Перемещает указатель файла в начало аудиопотока.8687Следующие два метода определены для совместимости с модулем [`aifc`](https://python-all.ru/3.3/library/aifc.html#module-aifc) и не делают ничего интересного.8889#### `Wave_read.getmarkers()`9091Возвращает `None`.9293#### `Wave_read.getmark(id)`9495Возбуждает исключение.9697Следующие два метода определяют термин «позиция», совместимый между ними, а в остальном зависящий от реализации.9899#### `Wave_read.setpos(pos)`100101Устанавливает указатель файла на указанную позицию.102103#### `Wave_read.tell()`104105Возвращает текущую позицию указателя файла.106107## 22.4.2. Объекты Wave\_write108109Объекты Wave\_write, возвращаемые функцией [`open()`](https://python-all.ru/3.3/library/wave.html#wave.open), имеют следующие методы:110111#### `Wave_write.close()`112113Убедитесь, что *nframes* указано верно, и закройте файл, если он был открыт с помощью\\n[`wave`](https://python-all.ru/3.3/library/wave.html#module-wave). Этот метод вызывается при сборке объекта.114115#### `Wave_write.setnchannels(n)`116117Устанавливает количество каналов.118119#### `Wave_write.setsampwidth(n)`120121Устанавливает ширину семпла равной *n* байт.122123#### `Wave_write.setframerate(n)`124125Устанавливает частоту дискретизации равной *n*.126127Изменено в версии 3.2: Нецелочисленный входной аргумент этого метода округляется до ближайшего целого.128129#### `Wave_write.setnframes(n)`130131Устанавливает количество фреймов в *n*. Это значение будет изменено позже, если будет записано больше фреймов.132133#### `Wave_write.setcomptype(type, name)`134135Устанавливает тип сжатия и описание. На данный момент поддерживается только тип сжатия `NONE`, что означает отсутствие сжатия.136137#### `Wave_write.setparams(tuple)`138139Кортеж *tuple* должен быть `(nchannels, sampwidth, framerate, nframes, comptype, compname)`, с допустимыми значениями для методов `set*()`. Устанавливает все параметры.140141#### `Wave_write.tell()`142143Возвращает текущую позицию в файле с теми же оговорками, что и методы [`Wave_read.tell()`](https://python-all.ru/3.3/library/wave.html#wave.Wave_read.tell) и [`Wave_read.setpos()`](https://python-all.ru/3.3/library/wave.html#wave.Wave_read.setpos).144145#### `Wave_write.writeframesraw(data)`146147Записывает аудиокадры без коррекции *nframes*.148149#### `Wave_write.writeframes(data)`150151Записывает аудиокадры и проверяет, что *nframes* корректен.152153Обратите внимание, что задавать какие-либо параметры после вызова `writeframes()` или `writeframesraw()` недопустимо, и любая попытка сделать это вызовет [`wave.Error`](https://python-all.ru/3.3/library/wave.html#wave.Error).154