在 Python 中列出目录和子目录中的所有文件

Fariba Laiq 2023年1月30日
  1. 在 Python 中使用 os.walk() 来列出目录和子目录中的所有文件
  2. 在 Python 中使用 listdir() 列出目录和子目录中的所有文件
  3. 在 Python 中使用 glob 列出目录和子目录中的所有文件
在 Python 中列出目录和子目录中的所有文件

Python 提供了许多方法来访问目录和子目录中的文件列表。本指南将介绍 os.walk()listdir()glob

在 Python 中使用 os.walk() 来列出目录和子目录中的所有文件

Python 中的 os 模块提供了一种与操作系统交互的方法。它有许多处理文件系统的内置函数。

我们可以使用这个模块获取、创建、删除和更改目录。walk() 是一种递归方法,它通过自上而下或自下而上的方式在目录树中生成文件名。

在下面的代码中,我们显示了目录和 MyFolder 的子目录中的文件。在我们的例子中,这个文件夹位于 Python 环境的主目录中。

示例代码:

import os

root = "MyFolder"
for path, subdirs, files in os.walk(root):
    for name in files:
        print(os.path.join(path, name))

输出:

MyFolder\text_file1.txt
MyFolder\text_file2.txt
MyFolder\SubFolder1\text_file3.txt
MyFolder\SubFolder1\text_file4.txt

在 Python 中使用 listdir() 列出目录和子目录中的所有文件

在下面的代码中,我们遍历目录树并访问它的文件和子文件,而不使用 walk 方法。我们已将根文件夹 MyFolder 指定为起点。

然后我们使用 listdir() 访问该文件夹的目录和子目录并将它们存储在项目中。我们将项目名称与之前的路径连接起来,并使用 isdir() 方法检查它是否是目录。

如果是这样,我们将进一步搜索该目录并应用相同的过程。如果文件名是文件名,我们已将文件名附加到上一个路径并显示它们。

示例代码:

import os

root = "MyFolder"
files = []
walk = [root]
while walk:
    folder = walk.pop(0) + "/"
    items = os.listdir(folder)  # items = folders + files
    for i in items:
        i = folder + i
        (walk if os.path.isdir(i) else files).append(i)
print(files)

输出:

['MyFolder/text_file1.txt', 'MyFolder/text_file2.txt', 'MyFolder/SubFolder1/text_file3.txt', 'MyFolder/SubFolder1/text_file4.txt']

在 Python 中使用 glob 列出目录和子目录中的所有文件

glob 是 Python 中的一个内置模块,代表 global。此模块返回名称和扩展名与特定模式匹配的所有文件路径。

这里我们使用了*.*,它表示任何具有任何扩展名的文件名。我们使用 glob.glob() 在目录或子目录中递归查找文件。

如果 recursive 设置为 True,则模式 ** 将匹配任何文件以及零个或多个文件夹和子目录。

示例代码:

import glob

path = "MyFolder\**\*.*"
for file in glob.glob(path, recursive=True):
    print(file)

输出:

MyFolder\text_file1.txt
MyFolder\text_file2.txt
MyFolder\SubFolder1\text_file3.txt
MyFolder\SubFolder1\text_file4.txt
作者: Fariba Laiq
Fariba Laiq avatar Fariba Laiq avatar

I am Fariba Laiq from Pakistan. An android app developer, technical content writer, and coding instructor. Writing has always been one of my passions. I love to learn, implement and convey my knowledge to others.

LinkedIn

相关文章 - Python Directory