从文件夹文本文件创建DataFrame报FileNotFoundError WinError3如何解决
问题根因
- 路径拼接不兼容:统计文件数量的代码未硬编码路径分隔符,可被系统正常识别;后续读取代码手动拼接了正斜杠
/作为分隔符,Windows系统默认使用反斜杠\作为路径分隔符,无法识别拼接后的非法路径,触发文件不存在报错。 - 未过滤非目录项:
os.listdir()会返回目标路径下所有文件、文件夹的名称,若根目录../data/hr/下存在独立文件,直接将其作为子目录遍历也会触发同类报错。 - 代码逻辑遗漏:提供的读取代码未定义
cv_data变量,路径问题修复后仍会触发名称错误。
解决方案
使用os.scandir()替代os.listdir()实现路径遍历,自动适配系统路径分隔符,同时过滤非目录、非文件项,完整可运行代码如下:
import os import pandas as pd path_folder_cvs = '../data/hr/' all_cvs_data = [] # 遍历根目录筛选子文件夹 for dir_entry in os.scandir(path_folder_cvs): if not dir_entry.is_dir(): continue category = dir_entry.name # 遍历子文件夹下的所有文件 for file_entry in os.scandir(dir_entry.path): if not file_entry.is_file(): continue # 读取文本内容,可根据实际文件编码调整encoding参数 with open(file_entry.path, 'r', encoding='utf-8', errors='ignore') as f: file_content = f.read() all_cvs_data.append({ 'category': category, 'file_name': file_entry.name, 'content': file_content }) # 生成DataFrame df_cvs = pd.DataFrame(all_cvs_data) print(df_cvs.head(2))
优化说明
- 原生适配多系统路径规则,无需手动拼接分隔符,避免Windows系统路径识别错误
- 自动过滤非目录、非文件条目,避免无效遍历触发报错
- 新增编码容错处理,兼容不同编码格式的文本文件读取
- 输出的DataFrame包含分类、文件名、文件内容三个字段,完全匹配需求
内容的提问来源于stack exchange,提问作者XIUJY1111
相关产品推荐
相关产品推荐

