相关文章推荐
旅行中的荒野  ·  Python ...·  3 月前    · 
从容的绿豆  ·  11.3. fileinput — ...·  3 月前    · 
乐观的灭火器  ·  中共中央 ...·  1 年前    · 
儒雅的投影仪  ·  unit testing - Unable ...·  2 年前    · 

源代码: Lib/wave.py

wave 模块提供了一个处理 Waveform Audio "WAVE" (或称 "WAV") 文件格式的便利接口。 仅支持未压缩的 PCM 编码波形文件。

在 3.12 版本发生变更: 增加了对 WAVE_FORMAT_EXTENSIBLE 标头的支持,要求扩展格式为 KSDATAFORMAT_SUBTYPE_PCM

wave 模块定义了以下函数和异常:

wave. open ( file , mode = None )

如果 file 是一个字符串,打开对应文件名的文件。否则就把它作为文件型对象来处理。 mode 可以为以下值:

'rb'

只读模式。

'wb'

只写模式。

注意不支持同时读写WAV文件。

mode 设为 'rb' 时返回一个 Wave_read 对象,而 mode 设为 'wb' 时返回一个 Wave_write 对象。如果省略 mode 并指定 file 来传入一个文件型对象,则 file.mode 会被用作 mode 的默认值。

如果你传入一个文件型对象,当调用 wave 对象的 close() 方法时并不会真正关闭它;调用者需要负责关闭文件对象。

open() 函数可以在 with 语句中使用。 当 with 代码块结束时, Wave_read.close() Wave_write.close() 方法会被调用。

在 3.4 版本发生变更: 添加了对不可搜索文件的支持。

写入一个 WAV 文件。

Wave_write 对象,由 open() 返回。

对于可查找的输出流, wave 头将自动更新以反映实际写入的帧数。 对于不可查找的流,当写入第一帧时 nframes 值必须是准确的。 要获取准确的 nframes 值可以通过调用 setnframes() setparams() 并附带 close() 被调用之前将要写入的帧数然后使用 writeframesraw() 来写入帧数据,或者通过调用 writeframes() 并附带所有要写入的帧。 在后一种情况下 writeframes() 将计算数据中的帧数并在写入帧数据之前相应地设置 nframes

在 3.4 版本发生变更: 添加了对不可搜索文件的支持。

Wave_write 对象具有以下方法:

close ( )

确保 nframes 是正确的,并在文件被 wave 打开时关闭它。 此方法会在对象收集时被调用。 如果输出流不可查找且 nframes 与实际写入的帧数不匹配时引发异常。

writeframes ( data )

写入音频帧并确保 nframes 是正确的。 如果输出流不可查找且在 data 被写入之后写入的总帧数与之前设定的 nframes 值不匹配将会引发错误。

在 3.4 版本发生变更: 现在可接受任意 bytes-like object

注意在调用 writeframes() writeframesraw() 之后再设置任何格式参数是无效的,而且任何这样的尝试将引发 wave.Error