如何使用wave模块打开ZIP压缩包中的音频文件?
正确实现方式
你需要先从ZIP压缩包中获取目标音频文件的类文件对象,再将这个对象传给wave.open(),而不是直接传入本地路径。具体代码实现如下:
import zipfile import wave # 打开目标ZIP压缩包 archive = zipfile.ZipFile(zip_path, 'r') # 获取压缩包内音频文件的类文件对象(注意这里传的是音频在ZIP内的相对路径) with archive.open(audio_path_in_zip) as audio_file: # 用wave模块打开这个类文件对象 wf = wave.open(audio_file, 'rb') # 这里可以执行后续操作,比如读取音频参数、数据 print(f"音频声道数: {wf.getnchannels()}") print(f"采样宽度: {wf.getsampwidth()}") # 操作完成后关闭wave对象 wf.close()
关键细节说明:
archive.open(audio_path_in_zip)返回的类文件对象,和直接打开本地文件的file对象行为一致,能够被wave.open()正常识别。audio_path_in_zip是音频文件在ZIP包内的相对路径,比如ZIP包内的结构是voices/record.wav,这里就传入该相对路径,而非本地文件的绝对路径。- 使用
with语句管理ZIP内的文件对象,能自动处理资源释放,避免泄漏。
内容的提问来源于stack exchange,提问作者avocado123123
相关产品推荐
相关产品推荐

