WAV文件转频谱图遇FileNotFoundError:问题求助与解决
WAV转频谱图时出现FileNotFoundError的解决方法
我正在开发首个将WAV文件转换为频谱图的项目,使用某仓库的preprocessing.py代码时出现报错,无法解决。具体报错信息如下:
Traceback (most recent call last): File "preprocessing.py", line 54, in <module> create_spectrogram(filename,name, train_data_path) File "preprocessing.py", line 42, in create_spectrogram plt.savefig(filename, dpi=400, bbox_inches='tight', pad_inches=0) File "C:\Users\tien chelsea\PycharmProjects\lam lai nhan dang spectogram\venv\lib\site-packages\matplotlib\pyplot.py", line 977, in savefig res = fig.savefig(*args, **kwargs) File "C:\Users\tien chelsea\PycharmProjects\lam lai nhan dang spectogram\venv\lib\site-packages\matplotlib\figure.py", line 3058, in savefig self.canvas.print_figure(fname, **kwargs) File "C:\Users\tien chelsea\PycharmProjects\lam lai nhan dang spectogram\venv\lib\site-packages\matplotlib\backend_bases.py", line 2325, in print_figure **kwargs) File "C:\Users\tien chelsea\PycharmProjects\lam lai nhan dang spectogram\venv\lib\site-packages\matplotlib\backend_bases.py", line 1648, in wrapper return func(*args, **kwargs) File "C:\Users\tien chelsea\PycharmProjects\lam lai nhan dang spectogram\venv\lib\site-packages\matplotlib\_api\deprecation.py", line 415, in wrapper return func(*inner_args, **inner_kwargs) File "C:\Users\tien chelsea\PycharmProjects\lam lai nhan dang spectogram\venv\lib\site-packages\matplotlib\backends\backend_agg.py", line 543, in print_png dpi=self.figure.dpi, metadata=metadata, pil_kwargs=pil_kwargs) File "C:\Users\tien chelsea\PycharmProjects\lam lai nhan dang spectogram\venv\lib\site-packages\matplotlib\image.py", line 1675, in imsave image.save(fname, **pil_kwargs) File "C:\Users\tien chelsea\PycharmProjects\lam lai nhan dang spectogram\venv\lib\site-packages\PIL\Image.py", line 2350, in save fp = builtins.open(filename, "w+b") FileNotFoundError: [Errno 2] No such file or directory: 'data/train/train\\100032-3-0-0.png'
问题分析
报错核心是路径错误:生成的目标路径data/train/train\\100032-3-0-0.png存在两个问题:
- 重复了
train目录,导致系统找不到该层级目录; - 混合使用了正斜杠
/和反斜杠\,跨平台路径处理不规范。
解决方案
修正路径重复问题
检查代码中train_data_path的定义,确认它是否已经包含/train后缀。如果train_data_path是data/train,那么拼接文件名时无需再添加train,否则会出现data/train/train的错误路径。用
os.path规范路径拼接
使用Python内置的os.path模块处理路径,自动适配不同系统的分隔符,避免手动拼接出错:
import os # 替换原路径拼接逻辑,用os.path.join组合目录和文件名 save_filename = os.path.join(train_data_path, f"{name}.png") plt.savefig(save_filename, dpi=400, bbox_inches='tight', pad_inches=0)
- 确保目标目录存在
在保存图片前,先检查并创建目标目录,防止因目录不存在导致报错:
import os save_filename = os.path.join(train_data_path, f"{name}.png") # 获取文件所在的目录路径 save_dir = os.path.dirname(save_filename) # 创建目录(如果不存在),exist_ok=True避免目录已存在时抛出异常 os.makedirs(save_dir, exist_ok=True) plt.savefig(save_filename, dpi=400, bbox_inches='tight', pad_inches=0)
内容的提问来源于stack exchange,提问作者Luckie One
相关产品推荐
相关产品推荐

