Python保存features_with_times文件时IOError报错修复及路径问题解决
看起来你遇到的是典型的路径拼接踩坑问题,咱们一步步拆解解决:
问题根源分析
你看到的IOError: [Errno 2] No such file or directory主要有两个原因:
- 路径拼接逻辑错误:你手动拼接输出前缀(比如
mfcc_flwts)和样本路径时,没加目录分隔符,导致前缀和samples直接粘在一起,形成了mfcc_flwtssamples/...这种无效路径,系统自然找不到。 - 输出目录可能未提前创建:就算路径拼对了,如果存放输出文件的目录不存在,Python也会抛出找不到路径的错误。
另外你提到要避免samples/出现在输出文件名里,本质是要提取样本文件的纯文件名,而不是带目录的完整路径。
修复方案与代码示例
咱们用Python自带的路径处理工具来规范操作,从根源避免手动拼接的低级错误:
1. 先确保输出目录存在
不管用哪种方式,先检查并创建输出目录,防止因为目录不存在报错:
import os # 定义你的输出目录,比如想把结果存在mfcc_flwts文件夹下 output_dir = "mfcc_flwts" # exist_ok=True表示如果目录已存在,不会抛出错误 os.makedirs(output_dir, exist_ok=True)
2. 正确拼接输出文件名(自动去掉samples/前缀)
假设你遍历samples文件夹下的文件,用os.path模块提取纯文件名,再拼接输出路径:
samples_dir = "samples" # 遍历samples文件夹下的所有文件 for filename in os.listdir(samples_dir): # 跳过非目标文件(比如隐藏文件),这里假设你处理的是mp3格式 if not filename.endswith(".mp3"): continue # 提取不带后缀的纯文件名(比如abc.mp3 -> abc),如果想保留原后缀就用filename即可 file_base = os.path.splitext(filename)[0] # 用os.path.join自动处理路径分隔符,避免手动拼接出错 output_filename = os.path.join(output_dir, f"{file_base}.txt") # 现在写入文件就不会有路径问题了 with open(output_filename, "w") as f: f.write(features_with_times) # 你的特征内容
如果用更现代的pathlib(Python3.4+推荐,代码更简洁直观):
from pathlib import Path samples_dir = Path("samples") output_dir = Path("mfcc_flwts") output_dir.mkdir(exist_ok=True) # 只遍历samples下的mp3文件,支持递归子文件夹的话用rglob for sample_file in samples_dir.glob("*.mp3"): # sample_file.stem是不带后缀的纯文件名,sample_file.name是带后缀的文件名 output_filename = output_dir / f"{sample_file.stem}.txt" with open(output_filename, "w") as f: f.write(features_with_times)
3. 为什么之前会出错?
你之前的代码大概率是手动拼接字符串,比如:
# 错误示例:手动拼接导致路径粘连 output_prefix = "mfcc_flwts" sample_path = "samples/abc.mp3" # 错误拼接:直接把前缀和路径连在一起,变成mfcc_flwtssamples/abc.mp3.txt wrong_filename = f"{output_prefix}{sample_path}.txt"
这种方式既没处理目录分隔符,也没提取纯文件名,才会出现samples/跑到路径中间的问题。用os.path.join或者pathlib的/运算符,会自动适配不同系统的路径分隔符(Windows用\,Linux/mac用/),彻底避免这类问题。
额外注意点
- 如果你的样本文件来自子文件夹,用
os.walk或者Path.rglob遍历,记得用os.path.basename()或Path.name提取纯文件名。 - 若需要保留原文件后缀,直接用
filename代替file_base即可。
内容的提问来源于stack exchange,提问作者kRazzy R
相关产品推荐
相关产品推荐

