Python 3 – os.walk() 方法

Python 3 – os.walk() 方法

Python 3 中的 os.walk() 方法是一个非常有用的函数,可以用于遍历目录树,获取目录下的所有文件和子目录。本文将详细介绍 os.walk() 方法的使用方法及其示例代码。

os.walk() 方法介绍

os.walk() 方法用于遍历一个目录树,获取目录下的所有文件和子目录。它返回一个生成器对象,可以通过 for 循环来遍历目录树,获取每个目录下的子目录和文件。每次遍历返回一个元组,包含当前目录的路径、当前目录下子目录的名字和当前目录下的文件名,如下:

for root, dirs, files in os.walk('.', topdown=True):
    print(root, dirs, files)

其中,root 为当前目录的路径,dirs 为当前目录下的子目录名列表,files 为当前目录下的文件名列表。通过 os.walk() 方法的默认参数,还可以控制遍历顺序、包含或排除某些文件夹等。

os.walk() 方法示例

下面,我们通过几个示例来演示如何使用 os.walk() 方法。

示例 1:遍历当前目录下所有文件

下面是一个简单的示例,遍历当前目录下的所有文件,并输出文件路径。

import os

for root, dirs, files in os.walk('.', topdown=True):
    for file in files:
        print(os.path.join(root, file))

示例输出结果:

./test.txt
./subdir1/file2.txt
./subdir1/file1.txt
./subdir2/file4.txt
./subdir2/subdir3/file5.txt
./subdir2/file3.txt
./subdir2/file2.txt
./subdir2/file1.txt

示例 2:遍历指定目录下所有文件

通过参数 topdown=True 可以控制遍历顺序,默认为从上往下遍历,我们也可以指定从下往上遍历。下面一个例子演示了如何遍历指定目录下的文件,包括子目录。

import os

for root, dirs, files in os.walk('mydir', topdown=False):
    for file in files:
        print(os.path.join(root, file))

示例输出结果:

mydir/subdir1/file2.txt
mydir/subdir1/file1.txt
mydir/subdir2/file4.txt
mydir/subdir2/subdir3/file5.txt
mydir/subdir2/file3.txt
mydir/subdir2/file2.txt
mydir/subdir2/file1.txt
mydir/test.txt

示例 3:遍历目录树并筛选文件

通过在遍历的过程中进行文件筛选,我们可以快速的得到满足条件的文件。

下面一个例子演示了如何在遍历的过程中筛选出 “txt” 文件。

import os

for root, dirs, files in os.walk('.', topdown=True):
    for file in files:
        if file.endswith(".txt"):
            print(os.path.join(root, file))

示例输出结果:

./test.txt
./subdir1/file2.txt
./subdir1/file1.txt
./subdir2/file4.txt
./subdir2/subdir3/file5.txt
./subdir2/file3.txt
./subdir2/file2.txt
./subdir2/file1.txt

示例 4:遍历目录树并创建目录

通过在遍历的过程中对目录进行判断和操作,我们可以快速的创建符合特定规则的目录。

下面一个例子演示了如何在遍历的过程中创建符合特定规则的目录。

import os

for root, dirs, files in os.walk('.', topdown=True):
    for dir in dirs:
        if "data" in dir:
            os.makedirs(os.path.join(root, dir, "new_dir"))

示例输出结果:

# 创建目录完成后再次遍历目录
./data/new_dir
./data/subdir1/new_dir
./data/subdir1/subdir3/new_dir
./data/subdir2/new_dir
./data/subdir2/subdir3/new_dir

示例 5:排除指定文件夹的遍历

如果需要排除某些文件夹的遍历,可以通过在遍历的过程中移除指定目录。

下面一个例子演示了如何在遍历的过程中移除指定文件夹。

import os

exclude_dirs = ['subdir1', 'subdir3']

for root, dirs, files in os.walk('.', topdown=True):
    # 移除指定文件夹
    for dir in exclude_dirs:
        if dir in dirs:
            dirs.remove(dir)
    for file in files:
        print(os.path.join(root, file))

示例输出结果:

./test.txt
./subdir2/file4.txt
./subdir2/subdir3/file5.txt
./subdir2/file3.txt
./subdir2/file2.txt
./subdir2/file1.txt
./subdir2/new_file.txt

结论

os.walk() 方法是 Python 3 中用于遍历目录树的一个非常有用函数,可以用来查找和操作所有子目录和文件。通过遍历目录树,我们可以快速地获取目录结构和目录下的所有文件,并对目录树进行增、删、改等操作,使代码更加灵活、高效。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程