以下代碼通過os.walk結合正則表達式收集目標文件的絕對路徑。
file_scanner函數將返回一個迭代器,迭代器存放的是目標路徑中所有符合正則表達式規則的文件名的絕對路徑。有了文件路徑就方便對文件進行其他操作了。
import os,re
def file_scanner(scanner_path,regex):
file_collect = [] #用於存放匹配到的目標文件的完成路徑
for root,fold,files in (os.walk(scanner_path)): #通過OS.walk來遞歸查找目標路徑文件
while len(files): #利用while循環判斷當前目錄是否存在文件
content = files.pop() #如果存在文件則依次彈出文件名
if re.match(regex,content,re.I): #判斷文件名是否符合正則表達式規則,不區分大小寫
file_collect.append(os.path.join(root,content)) #如果該文件符合正則表達式規則,則命中,並組合成絕對路徑,並記錄在列表中
path_collect = iter(file_collect) #將記錄文件路徑的列表,轉換爲迭代器,提高性能
return (path_collect) #函數執行完畢後,將返回上述迭代器,用作他用
if __name__ == '__main__': #函數執行開始的地方
#############################################
# 上面內容不要修改 #
#############################################
scanner_path = r"c:\Test" #指定需要掃描的文件夾,根據自己需求修改
regex = r"index.xls" #指定需要匹配文件的正則表達式regex對象,根據自己需求修改,此處匹配文件名爲index.xls的文件,文件名不區分大小寫
#############################################
# 以下面內容不要修改 #
#############################################
file_scanner(scanner_path,regex) #調用函數