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

Python os模块:如何使用walk函数遍历文件夹中的所有文件和子文件夹

发布时间:2023-05-28 08:03:07

在Python中,os模块是一个很常用的模块,它提供了许多与操作系统交互的功能,可以帮助Python程序在操作系统上执行文件和目录的操作。其中,os.walk()是一个非常有用的函数,可用于遍历文件夹(包括子文件夹)中的所有文件和目录。

os.walk()函数的基本语法如下:

os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]])

参数top是要遍历的顶层目录,必须是一个字符串。os.walk()函数会从该目录开始遍历所有子目录和文件。参数topdown的默认值为True,表示遍历顺序是从上到下(即先遍历子目录,再遍历父目录),如果指定为False,则会倒序遍历。参数onerror用于处理错误,如果出现错误,该函数会调用onerror函数。参数followlinks表示如果遇到符号链接目录,是否跟随它们。

os.walk()函数返回一个生成器,每次生成一个元组,包含以下三个值:

- 当前文件夹的路径

- 当前文件夹中所有子文件夹的名称列表

- 当前文件夹中所有文件的名称列表

使用os.walk()函数遍历文件夹的基本步骤如下:

1. 指定要遍历的顶层目录

2. 使用os.walk()函数遍历所有子目录和文件

3. 对于每个遍历到的文件和目录进行处理

下面是一个示例代码,演示如何使用os.walk()函数遍历文件夹中的所有文件和子文件夹:

import os

def traverse_folder(top_dir):
    """
    Traverse a folder recursively.
    """
    for root, subdirs, filenames in os.walk(top_dir):
        for filename in filenames:
            # 操作文件
            file_path = os.path.join(root, filename)
            print(file_path)

        for subdir in subdirs:
            # 操作子目录
            subdir_path = os.path.join(root, subdir)
            traverse_folder(subdir_path)

if __name__ == "__main__":
    # 指定要遍历的顶层目录
    top_dir = "/path/to/top/folder"
    traverse_folder(top_dir)

在这段代码中,我们定义了一个traverse_folder()函数,并使用os.walk()函数遍历所有子目录和文件。对于每个遍历到的文件,我们使用os.path.join()函数连接路径,获取文件的完整路径。然后,我们可以在这个文件上进行任何操作。对于每个遍历到的子目录,我们再次调用traverse_folder()函数,对该子目录进行递归遍历。

总结

通过使用Python中的os.walk()函数,可以非常方便地遍历文件夹中的所有文件和子文件夹。它可以通过递归的方式遍历所有文件和子目录,并对每个遍历到的文件和目录进行任何操作。在实际应用中,我们可以使用os.walk()函数来搜索特定类型的文件、查找文件夹中的重复文件等。