欢迎访问宙启技术站
智能推送

如何使用Python函数来递归地遍历文件夹中的所有文件?

发布时间:2023-06-12 13:41:42

Python 是一门功能强大的编程语言,它提供了许多用于操作文件和目录的工具。如果你需要遍历文件夹中的所有文件,Python 提供了一种简单的递归函数,可以自动地遍历整个目录树。在本文中,我们将介绍如何使用 Python 函数递归地遍历文件夹中的所有文件。

首先,我们需要导入 os 模块,这个模块提供了操作文件和目录的函数,我们可以使用它来检查文件和目录的属性,如文件大小、文件创建时间、文件类型等等。以下是如何导入 os 模块的代码:

import os

接下来,我们需要定义一个函数,用于递归地遍历文件夹中的所有文件。该函数将需要一个参数,表示要遍历的目录的路径。在该函数中,我们首先使用 os.listdir() 函数,列出目录中的所有文件。该函数返回一个列表,其中包含所有文件和子目录的名称。然后,我们使用 os.path.join() 函数将当前目录的路径与文件名链接起来,以便在递归调用中使用。如果当前文件是目录,则我们使用递归调用来检查子目录中的所有文件。最后,我们可以使用 os.path.isfile() 函数来检查文件是否为普通文件,如果是,则输出文件名或执行其他操作。

以下是一个示例代码:

def list_files(startpath):
    for root, dirs, files in os.walk(startpath):
        for file in files:
            filename = os.path.join(root, file)
            if os.path.isfile(filename):
                print(filename)

在该函数中,我们使用 os.walk() 函数来递归遍历整个目录树。该函数返回一个元组序列,其中包含三个元素,分别为当前目录的路径、当前目录中所有子目录的名称和当前目录中所有文件的名称。然后,我们使用一个 for 循环来遍历文件列表,并使用 os.path.join() 函数将当前目录的路径与文件名链接起来,以得到当前文件的完整路径。然后,我们检查当前文件是否为普通文件,如果是,则输出文件路径。

如果您想要进一步扩展该函数,您可以将其修改为接受一个额外的参数,用于指定要查找的文件类型。例如,如果您只想查找所有以 .txt 扩展名结尾的文件,您可以在该函数中添加一个条件来检查文件扩展名是否为 .txt:

def list_files(startpath, extension='.txt'):
    for root, dirs, files in os.walk(startpath):
        for file in files:
            filename = os.path.join(root, file)
            if os.path.isfile(filename) and filename.endswith(extension):
                print(filename)

在这个版本的函数中,我们添加了一个名为 extension 的自定义参数,并将其默认值设置为 .txt。然后,我们检查文件扩展名是否为 extension,如果是,则输出文件路径。

最后,使用该函数非常简单。只需要提供要遍历的目录路径即可。例如,要遍历当前工作目录中的所有文件,只需要:

list_files('.')

总之,Python 提供了一种简单的方法来递归地遍历文件夹中的所有文件。使用 os 模块的函数,可以轻松获取文件的各种属性,并递归遍历整个目录树。只需定义一个递归函数,并使用 os.walk() 函数遍历目录,就可以访问目录中的所有文件。