Loading

使用python筛选所需要的Excel文件

使用python筛选所需要的Excel文件

  最近公司要求从两千多个Excel文件中,找出包含敏感信息的Excel文件。通过抽取部分样本文件之后,发现包含敏感信息的文件都有相同特征的数据,所以我通过通过python实现对特征数据的匹配,获取到相应的Excel文档。
  实现过程分三步:
  第一步:获取文件夹下所有文件,使用递归查询

def getAllFiles(targetDir):
    files = []
    listFiles = os.listdir(targetDir)
    for i in range(0, len(listFiles)):
        path = os.path.join(targetDir, listFiles[i])
        if os.path.isdir(path):
            files.extend(getAllFiles(path))
        elif os.path.isfile(path):
            files.append(path)
            # print(listFiles[i])
    return files

如果路径下文件类型太多,只遍历excel文件后缀:

def getAllFiles(targetDir):
    files = []
    file_type_list = ['.xls', 'xlsx']
    listFiles = os.listdir(targetDir)
    for i in range(0, len(listFiles)):
        path = os.path.join(targetDir, listFiles[i])
        if os.path.isdir(path):
            files.extend(getAllFiles(path))
        elif os.path.isfile(path):
            f, e = os.path.splitext(path)
            if e in file_type_list:
                files.append(path)
    return files

  第二步:匹配特征数据
  此部分我使用pandas读取Excel数据,并且匹配其中一个单元格的特征是数据。

if __name__ == '__main__':
    text = ['特征数据']
    excel_path_dir = r'D:\excel_path'
    list = getAllFiles(excel_path_dir)

    for e in list:
        df = pd.read_excel(e)
        try:
            data = df.iloc[[0], [5]].values[0][0]
            if data in text :
                print(e[-22:])
        except:
            continue

  第三步:输出文件名称
  将打印数据输出到文件即可,方式如下,我直接百度搜索拷贝的,我这里输出到excelList.txt

class Logger(object):
    def __init__(self, filename="Default.log"):
        self.terminal = sys.stdout
        self.log = open(filename, "a")

    def write(self, message):
        self.terminal.write(message)
        self.log.write(message)

    def flush(self):
        pass

sys.stdout = Logger('excelList.txt')
posted @ 2022-09-19 10:40  adai_kfl  阅读(303)  评论(0)    收藏  举报