一、什么是Walkdir方法
在Python开发中,经常需要去查找某个文件,特别是在某个文件夹下递归查找。Python中的os模块提供了一个非常方便的方法——Walkdir方法。Walkdir方法可遍历一个目录树,从顶部到底部,为每个目录返回一个3元组,包括当前文件夹、当前文件夹中的子文件夹以及当前文件夹中的文件。使用Walkdir方法,我们可以快速地找到指定目录下的文件,或者查找包含特定字符串的文件。
二、Walkdir方法的使用
Walkdir方法的基本语法如下:
for root, dirs, files in os.walk(top, topdown=True, onerror=None, followlinks=False): # 遍历目录树,返回目录路径、子目录列表和文件名列表。 # root: 此次遍历的目录 # dirs: 此次遍历的目录下的子目录 # files: 此次遍历的目录下的文件
其中,参数 top为起始目录的路径(默认为当前目录),topdown表示是否按照自顶向下(默认)的顺序遍历文件夹,onerror表示如果访问目录时出错,所执行的函数,followlinks表示是否跟踪符号链接(默认为False)。当函数提供一个目录的名称时,它生成一个由3个元素组成的元组。
三、遍历文件夹查找指定文件
Walkdir方法可用于递归遍历文件夹,查找指定文件。下面是一个简单的例子,用来查找指定目录(本例为项目根目录下的files目录)内所有扩展名为txt的文件:
import os txt_files = [] for root, dirs, files in os.walk("./files"): for file in files: if file.endswith(".txt"): txt_files.append(os.path.join(root, file)) print(txt_files)
在这个例子中,我们逐个检查遍历得到的所有文件,如果文件名以.txt为结尾,则将文件的完整路径添加到txt_files数组中。最后输出数组中包含的所有txt文件。需要注意的是,在将文件路径加入到列表中时,需要使用 os.path.join() 方法将文件夹名和文件名拼接成完整路径。
四、查找包含特定字符串的文件
除了查找指定类型的文件外,Walkdir方法还可用于查找包含特定字符串的文件。以下是一个简单的例子,用来查找指定目录(本例为项目根目录下的files目录)内所有文件中包含特定字符串“hello world”的文件:
import os search_str = "hello world" for root, dirs, files in os.walk("./files"): for file in files: file_path = os.path.join(root, file) with open(file_path, 'r') as file: if search_str in file.read(): print(file_path)
在这个例子中,我们使用 with open() 打开每个文件,通过读取文件内容的方式来判断是否包含了特定字符串。需要注意的是,在使用完一个文件后,一定要记得关闭文件,以释放系统资源。
五、总结
在Python开发中,Walkdir方法可用于高效地查找指定类型的文件或者包含特定字符串的文件。需要注意的是,在使用Walkdir方法时,要注意程序执行期间的系统资源使用情况,并及时地关闭文件。