You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 13:45:01