在 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