- 需求:近期,同事在處理檔案的時候,常常需要從一堆檔案中提取一些資料資訊;
- 分析:由於每個資料夾下面的檔案或資料夾多如牛毛,檔案型別也很多種,需要針對不同檔案型別做處理,人工處理是不現實的,只能用指令碼處理了。
分析程式碼:
- 這裡定義了一個類
ErgodicFolder
,裡面有兩個方法process_file
和ergodic_path_list
; process_file
:對不同檔案型別進行處理;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 協議》,轉載必須註明作者和本文連結