一、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)
执行上面的代码,可以删除特定目录下所有满足条件的文件。