如何使用Python中的os模块中的walk函数遍历文件夹
在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模块中的函数,我们可以更加高效地处理文件系统中的数据。
