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

如何使用Python中的os模块中的walk函数遍历文件夹

发布时间:2023-06-23 02:47:43

在Python中,os模块提供了一些操作文件系统的函数和变量。其中,walk函数是一个非常有用的函数,可以用来遍历指定目录及其子目录中的所有文件和文件夹。本文将介绍如何使用Python中的os模块中的walk函数遍历文件夹,包括基本语法、参数介绍、使用示例等内容。

一、walk函数的基本语法

walk函数的基本语法如下所示:

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

其中,各参数的含义如下:

- top:要遍历的文件夹路径,可以是相对路径或绝对路径。

- topdown:可选参数,默认为True,表示首先遍历top目录,然后在遍历top目录的同时遍历其子目录。

- onerror:可选参数,用于处理异常,如果walk函数在遍历的过程中发生异常,将调用该函数进行处理。

- followlinks:可选参数,默认为False,表示不遍历符号链接指向的目录。

二、walk函数的返回值

os.walk函数返回的是一个生成器,每次迭代返回一个三元组(dirpath, dirnames, filenames),表示遍历到的当前目录、当前目录下的所有子目录以及当前目录下的所有文件。各元素的含义如下:

- dirpath:当前目录的路径。

- dirnames:当前目录下的所有子目录列表。

- filenames:当前目录下的所有文件列表。

三、使用os.walk函数遍历文件夹的例子

下面是一个简单的示例,演示了如何使用os.walk函数遍历一个文件夹及其所有子目录,并输出每个目录下的所有文件及子目录。

import os

def walk_dir(top):
    for dirpath, dirnames, filenames in os.walk(top):
        print(f'当前目录:{dirpath}')
        print(f'子目录列表:{dirnames}')
        print(f'文件列表:{filenames}')

if __name__ == '__main__':
    walk_dir('.')

输出结果如下所示:

当前目录:.
子目录列表:['__pycache__']
文件列表:['main.py']
当前目录:./__pycache__
子目录列表:[]
文件列表:['main.cpython-39.pyc']

上述代码中,首先导入了os模块,定义了一个名为walk_dir的函数,该函数接收一个参数top,表示要遍历的顶层目录。在函数中,使用for循环遍历了指定目录及其子目录中的所有文件夹和文件,并使用print函数输出了每个目录的路径、子目录列表和文件列表。

最后,使用if __name__ == '__main__'判断该模块是否被直接执行。如果是,调用walk_dir函数并传入'.'参数,表示遍历当前目录及其子目录中的所有文件和文件夹。

四、遍历指定文件类型的文件

有时候我们只需要遍历某种类型的文件,比如只需要遍历文本文件或图片文件等。这时可以结合os模块中的path.splitext函数来实现。

import os

def walk_dir(top, file_type='.txt'):
    for dirpath, dirnames, filenames in os.walk(top):
        for filename in filenames:
            if os.path.splitext(filename)[1] == file_type:
                print(os.path.join(dirpath, filename))

if __name__ == '__main__':
    walk_dir('.', '.py')

以上代码演示了如何只遍历指定后缀名的文件,例如.py文件。首先定义了一个名为walk_dir的函数,并添加了一个可选参数file_type,默认为'.txt',表示要遍历的文件后缀名。在函数中,使用os.path.splitext函数获取每个文件的后缀名,然后与指定的后缀名比较,如果一致则输出该文件的完整路径。

最后,使用if __name__ == '__main__'判断该模块是否被直接执行。如果是,调用walk_dir函数并传入'.'和'.py'参数,表示遍历当前目录及其子目录中的所有.py文件。

总结

本文介绍了如何使用Python中的os模块中的walk函数遍历文件夹,包括基本语法、参数介绍、使用示例等内容。通过学习,我们可以轻松地遍历指定目录及其子目录中的所有文件和文件夹,以及筛选指定后缀名的文件。通过灵活应用os模块中的函数,我们可以更加高效地处理文件系统中的数据。