pandas for循环批量读取Excel时文件识别报错,单文件读取正常
循环批量读取目录下Excel报错的排查与修正
报错核心成因
os.listdir会返回目标目录下的所有条目,包含子文件夹、系统生成的隐藏缓存文件(如macOS的.DS_Store、Windows的缩略图索引文件),并非仅匹配Excel格式文件。你此前单独测试可读的是手动筛选的合法Excel文件,但循环遍历遇到的子目录、无有效Excel格式的杂项文件,自然无法被pd.read_excel识别,触发文件类型校验错误。- 手动用字符串加号拼接路径的写法,在跨平台运行时容易出现路径分隔符不匹配的问题,导致程序无法定位到目标文件。
可直接运行的修正代码
import pandas as pd import os target_dir = "./data_excel" # 筛选仅保留合法格式的Excel文件,过滤掉杂项、子文件夹 excel_file_list = [ file for file in os.listdir(target_dir) if file.lower().endswith((".xlsx", ".xls")) ] week_concatenated = pd.DataFrame() for file in excel_file_list: # 使用系统自带的路径拼接方法,避免硬编码斜杠的兼容问题 file_full_path = os.path.join(target_dir, file) df = pd.read_excel(file_full_path, sheet_name="DIGITAL_TASKS") week_concatenated = pd.concat([week_concatenated, df], ignore_index=True)
补充排查提示
- 若修正后仍报错,可在循环中打印当前遍历的
file_full_path,定位具体是哪个文件触发问题,排查该文件是否被其他软件锁定、是否存在读取权限不足的情况 - 合并数据时添加
ignore_index=True参数,可避免合并后出现重复索引导致的后续操作异常
内容的提问来源于stack exchange,提问作者juan gomez
相关产品推荐
相关产品推荐

