首頁  >  文章  >  後端開發  >  如何在Python中遞歸搜尋子資料夾並檢索檔案?

如何在Python中遞歸搜尋子資料夾並檢索檔案?

Susan Sarandon
Susan Sarandon原創
2024-10-30 04:12:28162瀏覽

How to Recursively Search Sub-Folders and Retrieve Files in Python?

遞歸子資料夾搜尋和檔案擷取

在程式設計領域,遍歷目錄和擷取檔案可能是一項常見任務。一種有效的方法是採用遞歸演算法搜尋子資料夾並累積滿足特定條件的檔案清單。

遇到的問題

使用者遇到了障礙嘗試在遞歸子資料夾搜尋中建立特定檔案的清單時。該問題源於子資料夾變數拉入子資料夾列表,而不是包含該文件的當前資料夾。

子資料夾的用途

子資料夾變數旨在保存所需檔案所在主資料夾下的子資料夾名稱。

解決方法

解決這個問題的關鍵在於利用「root」或「dirpath」變數而不是「subFolder」。此變數會保存遞歸期間遍歷的目前目錄的絕對路徑。透過將此路徑合併到 fileNamePath 的構造中,可以實現所需的準確性。

<code class="python">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']</code>

Glob 模組增強

另一種有效的方法涉及利用 Python內建 glob 模組。 Glob 擅長根據副檔名選擇檔案。

<code class="python">import os
from glob import glob
result = [y for x in os.walk(PATH) for y in glob(os.path.join(x[0], '*.txt'))]</code>

產生器函數

為了簡潔高效的實現,也可以使用生成器函數。

<code class="python">from itertools import chain
result = (chain.from_iterable(glob(os.path.join(x[0], '*.txt')) for x in os.walk('.')))</code>

Python 3.4 解

如果您使用的是 Python 3.4 或更高版本,則可以利用 pathlib 模組的 rglob() 函數。

<code class="python">from pathlib import Path
result = list(Path(".").rglob("*.[tT][xX][tT]"))</code>

這些方法提供了有效的解決方案,用於遞歸搜尋子資料夾並編譯滿足所需條件的檔案列表,使您的檔案檢索任務變得輕而易舉。

以上是如何在Python中遞歸搜尋子資料夾並檢索檔案?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn