您的位置:

Python os.path.walk:遍历目录并执行指定操作

一、os.path.walk函数简介

Python的os.path模块提供了os.path.walk函数,该函数可以在指定目录及其子目录中遍历所有文件并执行指定操作。os.path.walk()需要3个参数,分别是起始目录、一个迭代函数、一个传递给迭代函数的参数。其基本语法如下:

import os

def process(path, dir, files):
    pass

os.path.walk('path/to/folder', process, None)

其中process为自定义迭代函数,os.path.walk()会自动递归遍历起始目录(包括其子目录)中所有文件,并将它们的路径传递给process函数。process函数中的参数path表示当前遍历的文件路径,dir表示当前遍历的目录名,files是一个数组,包含当前目录下的所有文件。

二、os.path.walk的实际应用

os.path.walk()的使用非常灵活,可以根据具体需求编写不同的迭代函数。下面,我们将介绍几种常见的实际应用场景。

三、查询特定目录下的所有文件

假设我们需要查询特定目录下的所有文件,我们可以编写如下的迭代函数:

import os

def list_files(path, dir, files):
    for file in files:
        # 使用os.path.join()函数将路径拼接起来
        print(os.path.join(path, file))
        
os.path.walk('path/to/folder', list_files, None)

执行上面的代码,可以列出特定目录下的所有文件路径。

四、计算特定目录下所有文件的大小

假设我们需要计算特定目录下的所有文件的大小,我们可以编写如下的迭代函数:

import os

total_size = 0

def compute_size(path, dir, files):
    global total_size
    for file in files:
        # 使用os.path.join()函数将路径拼接起来
        file_path = os.path.join(path, file)
        # 判断文件是否存在,并且不是目录
        if os.path.isfile(file_path):
            # 获取文件大小
            file_size = os.path.getsize(file_path)
            total_size += file_size

os.path.walk('path/to/folder', compute_size, None)
print('Total size:', total_size)

执行上面的代码,可以计算出特定目录下的所有文件大小总和。

五、删除特定目录下所有满足条件的文件

假设我们需要删除特定目录下所有满足条件的文件,我们可以编写如下的迭代函数:

import os

def delete_files(path, dir, files):
    for file in files:
        # 使用os.path.join()函数将路径拼接起来
        file_path = os.path.join(path, file)
        # 判断文件是否存在
        if os.path.exists(file_path):
            # 判断文件是否满足删除条件,这里的条件是:文件名以.txt结尾
            if file_path.endswith('.txt'):
                os.remove(file_path)

os.path.walk('path/to/folder', delete_files, None)

执行上面的代码,可以删除特定目录下所有满足条件的文件。