Python使用pd.read_excel读取文件夹报错,求解决方案
解决pd.read_excel读取文件夹报错的问题
错误原因
pd.read_excel() 仅支持读取单个Excel文件路径,你传入的是文件夹路径,openpyxl无法将其识别为合法的Excel文件格式,因此抛出InvalidFileException。传入单个文件路径能正常运行,也验证了这一点。
解决方案
遍历目标文件夹下的所有.xlsx(或openpyxl支持的其他格式)文件,逐个调用pd.read_excel()读取。以下是适配你需求的修改代码:
import numpy as np import pandas as pd import os import glob # 读取单个Excel文件的函数,保留你原有的逻辑 def get_single_excel(file_path): print(f"Reading data from {file_path}") data = pd.read_excel(file_path, engine='openpyxl') num_rows, num_columns = data.shape print("Original data preview:") print(data.head(100)) # 输出数据框的前100行 print(f"Number of rows: {num_rows}") print(f"Number of columns: {num_columns}") print(f"Total rows in data: {len(data)}") return data # 遍历文件夹读取所有Excel文件的函数 def get_folder_excels(folder_path): # 获取文件夹下所有.xlsx格式文件 excel_files = glob.glob(os.path.join(folder_path, "*.xlsx")) # 若需要包含xlsm/xltx/xltm,可修改为:glob.glob(os.path.join(folder_path, "*.xls[xm]")) all_data = [] if not excel_files: print(f"No Excel files found in {folder_path}") return all_data # 逐个读取文件,异常捕获避免单个文件报错导致程序终止 for file in excel_files: try: df = get_single_excel(file) all_data.append( (file, df) ) except Exception as e: print(f"Failed to read {file}: {str(e)}") continue return all_data # 你的文件夹路径 data_folder = r'E:\SVN_Pengfei\5.2020年工作\BaiduNetdiskWorkspace\1.ATM项目\4.技术文档\高速数据资料\北五环数据\雷达数据' predict_values_name = ' Speed Value' # 执行读取 all_excel_data = get_folder_excels(data_folder) # 后续处理示例(根据你的需求选择): # 1. 合并所有结构一致的Excel文件到一个DataFrame # combined_df = pd.concat([df for _, df in all_excel_data], ignore_index=True) # 2. 遍历每个文件的数据单独处理 # for file_path, df in all_excel_data: # # 在这里添加你的处理逻辑 # pass
额外说明
- 若需要遍历子文件夹中的Excel文件,将
glob.glob()改为glob.glob(os.path.join(folder_path, "**/*.xlsx"), recursive=True) - 如果文件夹内存在非Excel文件或损坏的文件,
try-except块会跳过这些文件并打印错误信息,保证程序继续运行 - 若不同Excel文件的结构不一致,建议单独处理每个文件的数据,避免合并出错
内容的提问来源于stack exchange,提问作者J Peg
相关产品推荐
相关产品推荐

