python wave 库 读取 BytesIO 对象的注意事项

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python wave 库 读取 BytesIO 对象的注意事项相关的知识,希望对你有一定的参考价值。

程序中遇到需要使用临时文件时,常使用内存中的 io.BytesIO() 代替实体二进制文件,以避免磁盘IO,同时免去了考虑文件名的麻烦。

file = io.BytesIO()
file.write(content)
content = file.getvalue()

如上所示,取值时通常使用 getvalue() 而不是 read(),若使用 read() 读取数据,需要先 file.seek(0) 使指针回到起点。

wave 模块默认是同时支持 文件路径 和 BytesIO 对象的,但当输入是 BytesIO 时,wave 并没有自动先 seek(0),故

使用 wave.open(wav_file, ‘rb‘) 之前,需要先 seek(0):

if isinstence(wav_file, io.BytesIO):
    wav_file.seek(0)
with wave.open(wav_file, ‘rb‘) as wf:
    ......
    ......

以上是关于python wave 库 读取 BytesIO 对象的注意事项的主要内容,如果未能解决你的问题,请参考以下文章

PyDub 从变量播放音频

python读取wav文件并播放[pyaudio/wave]

利用 wave 库 对音频进行格式处理

python中的wave库:2个通道和2个样本宽度

在 python 中寻找读取音频波值

python wave模块可以接受StringIO对象吗