Python项目同目录音频文件触发FileNotFoundError问题求助
解决Python中pydub播放同目录音频文件的FileNotFoundError问题
问题重现
运行Python项目时尝试后台播放同目录下的Music.mp3,却触发FileNotFoundError: [WinError 2] The system cannot find the file specified,已尝试刷新VSCode、更换路径等操作仍未解决。相关代码:
from pydub import AudioSegment from pydub.playback import play def play_mp3(file_path): sound = AudioSegment.from_mp3(file_path) repeated_sound = sound * -1 play(repeated_sound) MusicThread = threading.Thread(target=play_mp3,args=("Music.mp3",),daemon=True) MusicThread.start()
解决方案
- 使用绝对路径定位音频文件
VSCode默认运行目录可能不是脚本所在文件夹,导致相对路径失效。通过os模块获取脚本的绝对路径,再拼接音频文件路径,确保无论运行环境如何都能找到文件:
import os import threading from pydub import AudioSegment from pydub.playback import play def play_mp3(file_path): sound = AudioSegment.from_mp3(file_path) repeated_sound = sound * -1 play(repeated_sound) # 获取脚本所在文件夹的绝对路径 script_dir = os.path.dirname(os.path.abspath(__file__)) audio_path = os.path.join(script_dir, "Music.mp3") MusicThread = threading.Thread(target=play_mp3, args=(audio_path,), daemon=True) MusicThread.start()
检查文件的实际状态
- 确认音频文件确实与脚本在同一文件夹,未误放入子目录或其他位置
- 核对文件名完全匹配:注意大小写(如实际是
music.mp3而非Music.mp3)、扩展名是否正确(避免出现Music.mp3.txt这类被隐藏扩展名的情况) - 避免文件名包含空格、中文或特殊字符,防止路径解析异常
排查其他潜在问题
- 确保代码已导入
threading模块(原代码片段未显示该导入,缺失会引发运行错误) - 验证pydub依赖的ffmpeg已正确安装并配置到系统环境变量中(当前错误为文件找不到,但ffmpeg缺失会导致后续播放失败)
- 确保代码已导入
内容的提问来源于stack exchange,提问作者William Welburn
相关产品推荐
相关产品推荐

