Python读取wav文件报错'Wave_read' object has no attribute 'read'如何解决
错误引发原因
- 执行
from wave import *后,wave模块内置的open()函数会覆盖Python默认的内置文件打开函数open()。 - 此时调用
open(r'file.wav', 'rb')返回的是Wave_read类实例,该类仅提供readframes()、getparams()等wav音频专属处理方法,没有普通二进制文件对象的read()方法,因此触发属性不存在报错。
解决方法
根据你的使用需求选择对应方案:
方案1:读取.wav文件的原始二进制内容
修改导入方式,避免wave.open覆盖内置open:
# 不要使用from wave import *的导入方式 import wave # 明确调用Python内置open读取原始二进制 with open(r'file.wav', 'rb') as f: raw_file_content = f.read()
方案2:读取.wav文件内的音频数据
使用wave模块提供的专属方法读取音频内容:
import wave with wave.open(r'file.wav', 'rb') as wav_file: # 读取全部音频帧数据 audio_frames = wav_file.readframes(wav_file.getnframes()) # 可同步获取音频的采样率、通道数、位深等参数 audio_params = wav_file.getparams()
内容的提问来源于stack exchange,提问作者GeorgeP
相关产品推荐
相关产品推荐

