如何在Python中有效率地列出遞歸子資料夾中的檔案?

Barbara Streisand
發布: 2024-10-31 22:07:17
原創
656 人瀏覽過

How to Efficiently List Files from Recursive Subfolders in Python?

遞歸子資料夾搜尋以列出檔案:如何最佳化流程

搜尋子資料夾並建立特定檔案類型的清單時,必須確保子資料夾變數指向正確的資料夾。以下程式碼片段示範了此問題:

<code class="python">for root, subFolder, files in os.walk(PATH):
    for item in files:
        if item.endswith(".txt"):
            fileNamePath = str(os.path.join(root, subFolder, item))</code>
登入後複製

此處,subFolder 變數包含子資料夾列表,而不是 ITEM 檔案所在的資料夾。為了修正這個問題,我們可以使用由 root 變數表示的 dirpath,因為它保存了正確的目錄路徑。這個修改後的程式碼片段解決了這個問題:

<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 模組,它根據擴展名有效地選擇檔案:

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

Python 3.4 及更高版本提供基於glob 的解決方案的生成器版本:

<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 ,使用pathlib 模組的現代方法是:

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

以上是如何在Python中有效率地列出遞歸子資料夾中的檔案?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!