获取文件夹中所有的Excel和Excel对应的sheet name
import os import openpyxl base_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) test_data_path = os.path.join(base_path, "TestDatasX") def get_test_excel_list(file_dir): """获取文件夹下所有excel文件中的sheet name ----------------这里传一个文件路劲,要么是文件夹,要么是单个Excel :param file_dir: 文件可以是文件夹也可以是单个文件 :return: ['E:\\AutoTest_BMAPI\\TestDatasX\\search.xlsx\\search'] """ sheet_name_list = [] if file_dir.endswith("xlsx") or file_dir.endswith("xls"): """处理单个文件,确保格式一致""" sheet_name_list.append(file_dir) return [sheet_name_list] else: """处理文件夹""" for root, dir_name, data_name in os.walk(file_dir): excel_list = [] for i in data_name: if i.endswith("xlsx") or i.endswith("xls"): excel_list.append(os.path.join(root, i)) sheet_name_list.append(excel_list) return sheet_name_list def get_test_sheet_names(excel_list): sheets_name_list = [] if len(excel_list) == 1 and len(excel_list[0]) == 1: wb = openpyxl.load_workbook(excel_list[0][0]) sheet_names = wb.sheetnames for sheet_name in sheet_names: sheets_name_list.append(os.path.join(excel_list[0][0], sheet_name)) return sheets_name_list else: """获取多Excel的sheetName""" for i in excel_list: for j in i: wb = openpyxl.load_workbook(j) sheet_names = wb.sheetnames for sheet_name in sheet_names: sheets_name_list.append(os.path.join(j, sheet_name)) return sheets_name_list def excel_path_map_sheet_name(all_excel_sheet_list): """ :param all_excel_sheet_list: 根据Excel和对应的sheetName,对list做拆分,获取ExcelName和sheetName eg: ['E:\\pytest_selenium\\test\\TestDatasX\\search.xlsx'] :return: [('E:\\AutoTest_BMAPI\\TestDatasX\\search.xlsx', 'search')] """ case = [] for i in all_excel_sheet_list: case.append(os.path.split(i)) return case all_excel_path = r'E:\pytest_selenium\test\TestDatasX\listPage\test' print(excel_path_map_sheet_name(get_test_sheet_names(get_test_excel_list(all_excel_path))))
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix