如何有效地遞歸搜尋子資料夾中的特定檔案類型
編寫腳本時,通常需要深入搜尋主資料夾中的子資料夾。在Python中,os.walk函數可以遞歸地遍歷目錄。但是,僅提取特定類型的文件可能很棘手。
在提供的範例中,目標是建立主資料夾及其子資料夾中所有「.txt」檔案的清單。程式碼使用 os.walk 迭代所有檔案和子資料夾,但 subFolder 保存子資料夾列表,而不是每個檔案的正確子資料夾。
要解決此問題,需要使用「root」變量,它表示目前應使用目錄路徑而不是子資料夾。每個檔案都有其對應的根目錄,表示其在檔案系統中的位置。
這是一個最佳化的解決方案:
import os result = [os.path.join(dp, f) for dp, dn, filenames in os.walk(PATH) for f in filenames if os.path.splitext(f)[1] == '.txt']
此程式碼會迭代檔案系統中的所有根目錄、子目錄和檔案路徑資料夾。帶有“.txt”副檔名的檔案將會加入到結果清單中。
或者,glob 模組可以簡化基於擴展名的選擇:
from glob import glob result = [y for x in os.walk(PATH) for y in glob(os.path.join(x[0], '*.txt'))]
對於Python 3.4 ,更簡潔的解決方案可以使用Pathlib:
from pathlib import Path result = list(Path(".").rglob("*.[tT][xX][tT]"))
這些解決方案可以有效地搜尋子資料夾,根據副檔名提取文件,並將它們作為清單傳回。
以上是如何使用Python有效率地尋找子資料夾中的所有「.txt」檔案?的詳細內容。更多資訊請關注PHP中文網其他相關文章!