在 Python 中列出子目錄

Muhammad Maisam Abbas 2023年1月30日 2021年7月12日
  1. 使用 Python 中的 glob 模組列出子目錄
  2. 使用 Python 中的 os.scandir() 函式列出子目錄
  3. 使用 Python 中的 os.walk() 函式列出子目錄
在 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() 方法向我們展示了所有子目錄和所有隱藏目錄的子目錄,上面討論的所有方法都有自己獨特的用例,並且在不同的場景中都有幫助。我們討論的最佳方法取決於你要解決的具體問題。

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

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

相關文章 - Python Directory