使用AudioSegment读取.wav文件触发FileNotFoundError问题求助
报错根因
该报错和ffmpeg没有关联,核心问题是路径拼接逻辑错误。os.listdir()仅返回目标文件夹下的纯文件名,不会携带父级目录路径,你直接将仅含文件名的变量传入AudioSegment.from_wav()时,程序会默认在当前脚本的运行工作目录下查找文件,自然找不到存放在audios子目录下的音频文件。
修复方案
推荐两种成熟修复方式:
- 方式1:拼接完整路径后读取
每次调用读取方法前,先将audios目录路径和文件名拼接为完整路径,兼容所有运行场景,代码示例:
import os from pydub import AudioSegment # 统一拼接音频目录路径,避免斜杠兼容性问题 audio_dir = os.path.join(base_path, "audios") for audio_file in os.listdir(audio_dir): # 跳过非wav文件,避免意外报错 if not audio_file.endswith(".wav"): continue # 生成音频文件完整路径 full_audio_path = os.path.join(audio_dir, audio_file) audio = AudioSegment.from_wav(full_audio_path) # 后续原有处理逻辑
- 方式2:切换工作目录后读取
先将程序运行的工作目录切换到音频存放目录,再直接用纯文件名读取:
import os from pydub import AudioSegment os.chdir(os.path.join(base_path, "audios")) for audio_file in os.listdir("."): if not audio_file.endswith(".wav"): continue audio = AudioSegment.from_wav(audio_file) # 后续原有处理逻辑
可选排查步骤
如果修改路径后仍出现报错,可先打印拼接后的路径确认文件实际存在:
print(full_audio_path, os.path.exists(full_audio_path))
若输出为False,请检查base_path的取值是否正确,是否存在拼写错误、多余空格、路径分隔符不匹配等问题。
内容的提问来源于stack exchange,提问作者smag9467
相关产品推荐
相关产品推荐

