利用python遍历多级文件夹处理不同文件


原文:利用python遍历多级文件夹处理不同文件

  • 需求:近期,同事在处理文件的时候,常常需要从一堆文件中提取一些数据信息;
  • 分析:由于每个文件夹下面的文件或文件夹多如牛毛,文件类型也很多种,需要针对不同文件类型做处理,人工处理是不现实的,只能用脚本处理了。

分析代码:

  1. 这里定义了一个类 ErgodicFolder,里面有两个方法 process_fileergodic_path_list
  2. process_file:对不同文件类型进行处理;
  3. ergodic_path_list:实现文件夹的遍历,先是逐个遍历目标文件夹,如果是文件则调用process_file 方法处理,如果是文件夹则调用函数自身继续遍历该文件夹。
# -*- coding:utf8 -*-
import os

# 定义一个遍历文件的方法
class ErgodicFolder:
    def __init__(self):
        pass

    # 处理文件方法:针对不同文件类型做处理
    def process_file(self, file):
        FileType = file.split('.')[-1]
        if FileType.lower() == 'xlsx':  # 处理xlsx文件
            print(os.getcwd()+os.sep+file)
        if FileType.lower() == 'txt':  # 处理txt文件
            pass
        if FileType.lower() == 'xlsx':  # 处理pdf文件
            pass

    def ergodic_path_list(self, path):
        os.chdir(path)  # 进入到目标路径,类似命令行中的cd命令
        file_lists = os.listdir()  # 获取当前目录中所有文件夹和文件列表
        for file in file_lists:  # 遍历当前路径中的所有文件
            if os.path.isfile(file):  # 处理文件
                self.process_file(file)
            if os.path.isdir(file):  # 如果是文件夹,则调用函数自身再次遍历该文件夹
                self.ergodic_path_list(file)
        # 当前文件夹遍历结束,返回上级目录继续遍历
        os.chdir('..')

if __name__ == '__main__':
    path = r'数据源'
    E = ErgodicFolder()
    E.ergodic_path_list(path)

 评论