您的位置:

Python遍历文件夹及其子文件夹的方法:os.walk()

介绍

在Python开发中,处理文件和文件夹是不可避免的任务。而经常需要遍历文件夹及其子文件夹,并对其中的文件进行一些处理。Python提供了os模块来处理文件和文件夹的操作,其中os.walk()函数是遍历文件夹及其子文件夹的常用方法。

正文

os.walk()函数用法

os.walk()函数用于遍历一个目录内的所有子目录和文件,返回当前目录路径、当前路径下所有子目录名称和当前路径下所有文件名称。

函数语法:

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

参数说明:

  • top:需要遍历的目录路径
  • topdown:可选,默认为 True,表示当前目录遍历顺序是自上而下的,如果为 False,表示自下而上遍历
  • onerror:可选,默认为 None,表示遍历目录时发生错误如何处理
  • followlinks:可选,默认为 False,表示是否跟随符号链接

返回值:

遍历时,对于每个目录,os.walk() 会返回一个三元组,分别包含如下内容:

  • 当前目录的相对路径
  • 当前目录下的子目录列表
  • 当前目录下的文件列表

使用os.walk()遍历文件夹及其子文件夹

以下是 os.walk() 方法遍历文件夹及其子文件夹的示例代码:

import os
 
# 要遍历的目录
path = "your_path"
 
# 遍历目录及其子目录,返回一个三元组 (dirpath, dirnames, filenames)
for dirpath, dirnames, filenames in os.walk(path):
    # 输出目录路径(相对于输入路径)
    print("dirpath", dirpath)
    # 输出所有子目录(相对于输入路径)
    for dirname in dirnames:
        print("dirname", dirname)
    # 输出所有文件路径(相对于输入路径)
    for filename in filenames:
        print("filename", os.path.join(dirpath, filename))

说明:

  • 使用 os.walk() 方法遍历给定路径的目录及其子目录,返回一个三元组 (dirpath, dirnames, filenames)
  • dirpath 是一个字符串,代表当前目录的路径
  • dirnames 是一个列表,包含当前目录下所有的子目录名称
  • filenames 是一个列表,包含当前目录下所有的文件名称
  • os.path.join(dirpath, filename) 方法用于连接目录和文件名,以得到文件的完整路径

使用os.walk()实现文件夹和文件的操作

使用 os.walk() 方法,可以对文件夹及其子文件夹中的文件进行一些操作,例如删除文件、修改文件名等。以下代码演示了如何使用 os.walk() 方法实现删除指定后缀名的所有文件。

import os
 
# 要遍历的目录
path = "your_path"
 
# 删除指定后缀名的所有文件
for dirpath, dirnames, filenames in os.walk(path):
    for filename in filenames:
        if filename.endswith(".txt"):
            os.remove(os.path.join(dirpath, filename))

说明:

  • 遍历指定路径的所有文件夹和文件,如果文件名以 ".txt" 结尾,则删除文件(使用 os.remove() 函数实现)。
  • os.path.join(dirpath, filename)方法用于连接目录和文件名,以得到文件的完整路径。

小结

使用 os.walk() 方法可以很方便地实现遍历文件夹及其子文件夹的功能,同时也可以在遍历的过程中对文件夹中的文件进行一些操作。学习 os.walk() 方法可以为 Python 文件和文件夹的处理操作提供更多的便利,避免冗长的目录递归过程。