在 Python 中列出子目錄
在 Python 中,你可以使用三種有效的方法來列出指定目錄中的所有子目錄:glob.glob() 函式、os.scandir() 函式和 os.walk() 函式。本教程將演示如何使用這些函式在 Python 中列出子目錄。
使用 Python 中的 glob
模組列出子目錄
glob
模組用於獲取匹配特定模式的路徑名。我們可以使用 Python 的 glob
模組中的 glob()
函式,通過在目錄路徑末尾指定 /*/
來列出指定主目錄的所有子目錄。以下程式片段向我們展示瞭如何使用 glob
模組列出主目錄中的所有子目錄:
import os
from glob import glob
glob(os.getcwd() + "/*/", recursive = True)
輸出:
['/content/sample_data/', '/content/subdirectory/']
我們在上面的程式碼中使用 glob
模組列出了當前工作目錄的所有子目錄。這種方法的缺點是它不會顯示任何隱藏目錄或目錄名稱以句點 .
開頭的目錄;它只顯示直接子目錄。
使用 Python 中的 os.scandir()
函式列出子目錄
os
是 Python 中的一個內建模組,可用於許多與作業系統相關的功能,例如檔案儲存。os.scandir()
函式可用於列出指定主目錄的所有子目錄。此函式將目錄路徑作為輸入引數並返回一個迭代器,該迭代器可用於迭代路徑內的檔案和目錄。
以下程式碼片段向我們展示瞭如何使用 os.scandir()
函式列出主目錄中的所有子目錄:
import os
[f.path for f in os.scandir(os.getcwd()) if f.is_dir()]
輸出:
['/content/.config',
'/content/.ipynb_checkpoints',
'/content/sample_data',
'/content/subdirectory']
我們在上面的程式碼中使用 os.scandir()
函式列出了當前工作目錄的所有子目錄。此過程是對先前方法的改進,因為它還列出了隱藏目錄或目錄名稱以句點 .
開頭的目錄。這種方法唯一的缺點是它只顯示主父目錄的直接子目錄。它不會獲取主目錄中的子子目錄。
使用 Python 中的 os.walk()
函式列出子目錄
os.walk()
函式是另一種方法,可用於在 Python 中列出單個主目錄中的所有子目錄。os.walk()
函式將主目錄的路徑作為輸入引數並返回一組元組,其中每個元組的第一個元素是目錄樹中子目錄的路徑。這包括所有子目錄及其子目錄,直到目錄樹結束。
os.walk()
函式還為我們提供了隱藏目錄或目錄名稱以句點 .
開頭的目錄。以下程式碼片段向我們展示瞭如何使用 os.walk()
函式列出主目錄中的所有子目錄:
import os
[x[0] for x in os.walk(os.getcwd())]
輸出:
['/content',
'/content/.config',
'/content/.config/logs',
'/content/.config/logs/2021.05.06',
'/content/.config/configurations',
'/content/.ipynb_checkpoints',
'/content/sample_data',
'/content/sample_data/.ipynb_checkpoints',
'/content/sample_data/subsubdirectory',
'/content/subdirectory']
我們在上面的程式中使用 os.scandir()
函式列出了當前工作目錄的所有子目錄。如我們所見,輸出顯示了目錄樹中的所有目錄。結果還包括所有隱藏目錄。
儘管 os.walk()
方法向我們展示了所有子目錄和所有隱藏目錄的子目錄,上面討論的所有方法都有自己獨特的用例,並且在不同的場景中都有幫助。我們討論的最佳方法取決於你要解決的具體問題。
Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.
LinkedIn