廢話不說,先上代碼:
1 import os 2 3 4 def show_files(path, all_files): 5 # 首先遍歷當前目錄所有文件及文件夾 6 file_list = os.listdir(path) 7 # 准備循環判斷每個元素是否是文件夾還是文件,是文件的話,把名稱傳入list,是文件夾的話,遞歸 8 for file in file_list: 9 # 利用os.path.join()方法取得路徑全名,並存入cur_path變量,否則每次只能遍歷一層目錄 10 cur_path = os.path.join(path, file) 11 # 判斷是否是文件夾 12 if os.path.isdir(cur_path): 13 show_files(cur_path, all_files) 14 else: 15 all_files.append(file) 16 17 return all_files 18 19 20 # 傳入空的list接收文件名 21 contents = show_files("e:\\python", []) 22 # 循環打印show_files函數返回的文件名列表 23 for content in contents: 24 print(content)
剛開始寫了半天,只能遍歷當前目錄,要不就是遞歸超過最大深度,最后才知道,還有一個os.path.join()方法,不調用這個方法的話,每次遞歸傳進去的路徑名稱只有一個文件目錄名,而程序執行的時候是以程序文件所在目錄為參考的相對目錄
