wave
— 读写 WAV 文件
¶
源代码: Lib/wave.py
wave
module provides a convenient interface to the WAV sound format. Only files using
WAVE_FORMAT_PCM
are supported. Note that this does not include files using
WAVE_FORMAT_EXTENSIBLE
even if the subformat is PCM.
wave
模块定义了以下函数和异常:
若 file 是字符串,按该名称打开文件,否则将其视为像文件对象。 mode 可以是:
'rb'
只读模式。
'wb'
只写模式。
注意:它不允许读/写 WAV 文件。
A
mode
of
'rb'
返回
Wave_read
对象,而
mode
of
'wb'
返回
Wave_write
对象。若
mode
被省略且像文件对象被传递作为
file
,
file.mode
被用作默认值对于
mode
.
若传入像文件对象,wave 对象将不关闭它当它的
close()
方法被调用;关闭文件对象是调用者的责任。
open()
函数可以用于
with
语句。当
with
阻塞完成,
Wave_read.close()
or
Wave_write.close()
方法被调用。
3.4 版改变: 添加支持不可寻址文件。
错误被引发,当某些东西因违反 WAV 规范或命中实现缺陷而不可实现时。
Wave_read 对象,如返回通过
open()
,拥有下列方法:
返回音频通道数 (
1
为单声道,
2
为立体声)。
返回采样宽度,以字节为单位。
返回采样频率。
返回音频帧数。
返回压缩类型 (
'NONE'
是唯一支持的类型)。
人性化可读版本的
getcomptype()
。通常
'not compressed'
平行
'NONE'
.
返回
namedtuple()
(nchannels, sampwidth,
framerate,
nframes,
comptype,
compname)
,相当于输出对于
get*()
方法。
返回
None
.
引发错误。
以下 2 种法定义了在它们之间兼容的 position 术语,否则从属实现。
将文件指针设置到指定位置。
返回当前文件指针位置。
对于可寻址输出流,
wave
头会自动更新以反映实际写入的帧数。对于不可寻址流,
nframes
值必须精确,当写入第一帧数据时。精确的
nframes
值可以达成通过调用
setnframes()
or
setparams()
采用将要写入的帧数先于
close()
被调用然后使用
writeframesraw()
以写入帧数据,或通过调用
writeframes()
采用要写入的所有帧数据。在后一种情况下,
writeframes()
将计算数据中的帧数并设置
nframes
故此,在写入帧数据之前。
Wave_write 对象,如返回通过
open()
,拥有下列方法:
3.4 版改变: 添加支持不可寻址文件。
确保
nframes
正确,并关闭文件若它的打开是通过
wave
。此方法被调用当收集对象时。它会引发异常,若输出流不可寻址且
nframes
不匹配实际写入帧数。
设置通道数。
将采样宽度设为 n 字节。
将帧速率设为 n .
3.2 版改变: 此方法的非整型输入,会被舍入到最近整数。
将帧数设为 n 。这稍后会改变,若实际写入帧数不同 (此更新尝试会引发错误,若输出流不可寻址)。
设置压缩类型和描述。目前,仅压缩类型
NONE
受支持,意味着不压缩。
tuple
应该为
(nchannels, sampwidth, framerate, nframes, comptype,
compname)
,具有有效值对于
set*()
方法。设置所有参数。
返回文件的当前位置,具有相同免责声明对于
Wave_read.tell()
and
Wave_read.setpos()
方法。
写入音频帧并确保 nframes 是正确的。它将引发错误,若输出流不可寻址且已写入帧总数之前 data 已写入不匹配的先前设置值对于 nframes .
3.4 版改变: 任何 像字节对象 现接受。
注意:设置任何参数无效,之前有调用
writeframes()
or
writeframesraw()
,且任何试图这样做会引发
wave.Error
.