在做自動化或資料處理時,我們常常需要:
- 讀取某個資料夾內的所有檔案
- 分辨哪些是檔案、哪些是資料夾
- 顯示資料夾的層級結構
os 模組 + 遞迴來完成 👍📦 匯入模組
import os
🔁 遍歷資料夾(遞迴實作)
以下程式會:
- 列出所有檔案與資料夾
- 用縮排呈現層級結構
- 自動進入子資料夾繼續處理
def traverse_folder(folder_path, indent=0): items = os.listdir(folder_path) for item in items: item_path = os.path.join(folder_path, item) if os.path.isfile(item_path): print(" " * indent + "檔案:", item) elif os.path.isdir(item_path): print(" " * indent + "目錄:", item) traverse_folder(item_path, indent + 4)
▶️ 執行程式
folder_path = 'C:/Users/User/python/path'traverse_folder(folder_path)
👉 記得改成你自己的資料夾路徑
🧠 程式邏輯說明
📌 os.listdir()
os.listdir(folder_path)
- 取得資料夾內所有項目(檔案 + 資料夾)
📌 os.path.join()
os.path.join(folder_path, item)
- 組合完整路徑(避免路徑錯誤)
📌 判斷檔案 / 目錄
os.path.isfile(item_path)os.path.isdir(item_path)
- 判斷是檔案還是資料夾
📌 遞迴(重點!)
traverse_folder(item_path, indent + 4)
👉 遇到資料夾就「再次呼叫自己」
🎨 縮排效果說明
print(" " * indent + "檔案:", item)
- 用空格控制縮排
- 每進一層資料夾 ➜ 多 4 個空格
👉 輸出會像這樣:
目錄: folder1 檔案: a.txt 目錄: subfolder 檔案: b.txt
⚠️ 小提醒
- 路徑要用
/或\\ - 若資料夾很大,執行時間會比較久
- 遞迴層數過深可能影響效能(一般使用沒問題)
🎯 小結
這個方法可以幫你做到:
✔ 遍歷整個資料夾
✔ 分辨檔案與目錄 ✔ 顯示層級結構
非常適合用在:
👉 檔案整理工具
👉 自動備份 👉 批次處理檔案
- 讀取某個資料夾內的所有檔案
- 分辨哪些是檔案、哪些是資料夾
- 顯示資料夾的層級結構















