使用Python读取指定文件夹Excel文件时提示文件不存在的求助
问题分析与解决
核心问题
- 文件名丢失后缀:处理文件名时用
file[:-5]去掉了.xlsx后缀,导致打开路径变成G:\My Drive\Chip data\D060003,但实际文件是D060003.xlsx,系统找不到无后缀的目标文件。 - 局部变量无法访问:
excels列表定义在Excel_Data函数内部,函数外代码无法直接调用该变量,运行时会触发NameError。 - 未处理子目录路径:
os.walk会遍历目标文件夹下的所有子目录,但拼接路径时仅使用根目录,若文件存于子文件夹,拼接后的路径会指向错误位置。
修正后的代码
import os import xlwings as xw def Excel_Data(): excels = [] # 遍历目录,保存完整文件路径 for root, dirs, files in os.walk(r'G:\My Drive\Chip data'): for file in files: if file.endswith('.xlsx') and not file.startswith('~'): # 拼接完整路径,保留文件后缀 full_path = os.path.join(root, file) excels.append(full_path) return excels # 获取所有Excel文件的完整路径 excel_files = Excel_Data() # 逐个打开文件,增加异常捕获便于排查 for file_path in excel_files: try: xw.Book(file_path) print(f"成功打开文件: {file_path}") except Exception as e: print(f"打开文件失败 {file_path}: {str(e)}")
关键修改点
- 保存完整文件路径:用
os.path.join(root, file)拼接当前遍历目录与文件名,确保子目录内的文件也能被正确定位。 - 保留文件后缀:不再截断
.xlsx,保证路径指向真实存在的文件。 - 函数返回结果:让外部代码能获取到遍历生成的文件列表。
- 增加异常捕获:方便定位单个文件的打开故障。
内容的提问来源于stack exchange,提问作者bennnnnn
相关产品推荐
相关产品推荐

