Python os.walk() 方法详解

  • Post category:Python

Python中os.walk()是一个遍历目录树的方法,用于遍历文件目录中的所有文件及文件夹,并返回一个由三元组构成的生成器。三元组的内容包括当前遍历到的文件夹路径、当前文件夹下的子文件夹列表以及当前文件夹下的文件列表。

具体使用方式如下:

基本用法

import os
# 遍历指定目录下的所有文件及文件夹,返回一个生成器
for root, dirs, files in os.walk('/path/to/dir'):
    # 打印当前目录下的所有文件夹
    print(dirs)
    # 打印当前目录下的所有文件
    print(files)

这段代码可以遍历指定目录下所有文件和文件夹,并打印出当前文件夹下的所有文件夹名和文件名。

遍历过滤特定文件类型

如果需要遍历指定类型的文件,可以使用os.path.splitext()函数来进行判断。

import os
# 遍历指定目录下的所有文件及文件夹,返回一个生成器
for root, dirs, files in os.walk('/path/to/dir'):
    # 遍历目录下的所有文件
    for file in files:
        # 如果文件类型为txt,则进行处理
        if os.path.splitext(file)[1] == '.txt':
            print(os.path.join(root, file))

这段代码可以遍历指定目录下所有txt文件,并打印出文件路径。

遍历递归子目录

os.walk()默认为横向遍历。如果需要遍历子目录,则需要设置参数topdown为False。

import os
# 遍历指定目录下的所有文件及文件夹,返回一个生成器
for root, dirs, files in os.walk('/path/to/dir', topdown=False):
    # 遍历目录下的所有文件夹
    for dir in dirs:
        print(os.path.join(root, dir))
    # 遍历目录下的所有文件
    for file in files:
        print(os.path.join(root, file))

这段代码可以遍历指定目录下的所有文件和文件夹,包括子目录中的。

批量修改文件名

os.walk()还可以用于批量修改文件名。

import os
# 遍历指定目录下的所有文件及文件夹,返回一个生成器
for root, dirs, files in os.walk('/path/to/dir'):
    # 遍历目录下的所有文件
    for file in files:
        # 如果文件类型为txt,则进行处理
        if os.path.splitext(file)[1] == '.txt':
            # 修改文件名
            os.rename(os.path.join(root, file), os.path.join(root, 'new_' + file))

这段代码可以遍历指定目录下所有txt文件,并在文件名前加上前缀new_。

总结:

os.walk()是Python自带的一个遍历目录树的方法,可以实现遍历目录下的所有文件和文件夹,并作出相应操作。在实际开发中,os.walk()的作用非常广泛,可以用于批量重命名、复制、移动等操作。