Python Glossary English

все Python 3до 3.13Удалено из стандартной библиотекипонятие

sndhdr

удалённые модули

Определял формат звукового файла по заголовку. Удалён в Python 3.13 — для WAV читайте параметры модулем wave, иначе проверяйте сигнатуру байт.

Синтаксис

import sndhdr  # до 3.13

sndhdr.what(файл) возвращал SndHeaders: формат ('wav', 'aiff', 'au' и другие), частоту, число каналов, кадров и разрядность. Убран по PEP 594 вместе с imghdr: список форматов устарел, а сопровождать модуль было некому. Как переписать: для WAV откройте файл wave.open() и возьмите getparams() — там те же частота, каналы и разрядность; формат по первым байтам узнаётся сравнением: b'RIFF' и b'WAVE' с 8-го байта у WAV, b'FORM' у AIFF, b'.snd' у AU. Сотни форматов знают filetype, puremagic и python-magic; пакет standard-sndhdr на PyPI возвращает модуль.

Примеры

# Python 3.13+
try:
    import sndhdr
except ModuleNotFoundError as e:
    print(type(e).__name__)  # → ModuleNotFoundError
# Python 3.13+
import wave
with wave.open('a.wav', 'wb') as w:
    w.setparams((1, 2, 8000, 0, 'NONE', 'not compressed'))
    w.writeframes(bytes(200))
head = open('a.wav', 'rb').read(12)
print(head[:4] == b'RIFF' and head[8:12] == b'WAVE')  # → True
with wave.open('a.wav', 'rb') as r:
    print(r.getframerate(), r.getnchannels(), r.getnframes())  # → 8000 1 100
import sndhdr, wave
with wave.open('a.wav', 'wb') as w:
    w.setparams((1, 2, 8000, 0, 'NONE', 'not compressed'))
    w.writeframes(bytes(200))
info = sndhdr.what('a.wav')
print(info.filetype, info.framerate, info.nchannels)  # → wav 8000 1

См. также

Частые ошибки

Открыть в полном глоссарииdocs.python.orgСообщить о неточности