利用 python 遍歷多級資料夾處理不同檔案

Bgods發表於2019-10-18

原文:利用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)
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章