zoukankan      html  css  js  c++  java
  • 获取文件夹中所有的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	estTestDatasXlistPage	est'
    print(excel_path_map_sheet_name(get_test_sheet_names(get_test_excel_list(all_excel_path))))
  • 相关阅读:
    求数组中最小的k个数
    二叉树的四种遍历方法(C++)
    常见排序算法总结(C++)
    《剑指offer》第六十八题:树中两个结点的最低公共祖先
    《剑指offer》第六十七题:把字符串转换成整数
    《剑指offer》第六十六题:构建乘积数组
    《剑指offer》第六十五题:不用加减乘除做加法
    《剑指offer》第六十四题:求1+2+…+n
    《剑指offer》第六十三题:股票的最大利润
    《剑指offer》第六十二题:圆圈中最后剩下的数字
  • 原文地址:https://www.cnblogs.com/nieliangcai/p/13329469.html
Copyright © 2011-2022 走看看