遞歸遍歷目錄結構以列出所有檔案是常見的程式需求。在這種情況下,讓我們探討如何在 Python 中有效地完成此任務。
一種方法是使用 Python 3.5 中引入的 pathlib.Path().rglob() 方法。它提供了一種便捷的方法來識別目錄及其子目錄中與特定模式匹配的所有檔案:
from pathlib import Path for path in Path('src').rglob('*.c'): print(path.name)
如果您喜歡使用glob 模組,您可以利用其glob() 函數和recursive=True參數:
from glob import glob for filename in glob('src/**/*.c', recursive=True): print(filename)
另一個選項,與舊的Python 版本相容,涉及使用os.walk()進行遞歸遍歷和fnmatch.filter() 用於模式匹配:
import fnmatch import os matches = [] for root, dirnames, filenames in os.walk('src'): for filename in fnmatch.filter(filenames, '*.c'): matches.append(os.path.join(root, filename))
由於與pathlib 模組相關的開銷較低,os.walk() 技術在檔案數量較多的情況下可能會更快。
無論您選擇哪種方法,這些方法都會有效地幫助您遞歸地識別和列出指定目錄及其子資料夾中的檔案。
以上是如何使用Python遞歸列出目錄中的所有檔案?的詳細內容。更多資訊請關注PHP中文網其他相關文章!