python os 遍历 子目录中所有文件_Python查找文件有多牛?男默女泪!!!

cd84ae78817d12e0ff6c8729aaec86f1.png

某天,隔壁大神正在看一份内核技术文档,我想研读下文档向大神“偷师”,恰好我的虚拟XP桌面无法使用搜索功能,而且项目组一般是一起使用共享目录的,这就导致大量资料杂糅在一起,我要找到大神的"葵花宝典"难上加难。

在日常工作中,大家基本都要自己记录重要文件路径,或者通过一层又一层目录去查找需要的文件,这不仅大海捞针,而且相当费时!

今天就为大家分享如何使用Python查找你最需要的文件,分为四个版本(初级、中级、高级、传说),默认以Win形式演示。

1、介绍os.walk遍历目录树

在实际工作中,极有可能会遇到查找某个目录及其子目录下的所有文件。例如,查找某个目录及其目录下的所有的图片文件或者所有的Word文件名,查找某个目录及其子目录最大的十个文件。对于每个目录而言,os.walk返回一个三元组(dirpath,dirnames,filenames)。

dirpath:保存的是当前目录。

dirnames:当前目录下的子目录列表

filenames: 当前目录下的文件列表。

2、查找文件代码

本次默认Windows查找文件,演示的图片如下

主目录:F:python演示流浪地球计划

f039779a0b56ff45ab187833e6b11a54.png

子目录:F:python演示流浪地球计划总计划

26a0df08d34b93e524da5f7c8db01434.png

1. 初级查找文件(findfile_v1.py)

 1import os 2 3def getFilepath(rootDir): 4 filepathresult = [] # 所需要的文件路径的集合 5 for dirpath,dirNames,fileNames in os.walk(rootDir): 6 for fileName in fileNames: 7 apath = os.path.join(dirpath, fileName)  8 filepathresult.append(apath) 9 for i in range(len(filepathresult)): 10 print(filepathresult[i])1112if __name__ == '__main__':13 rootDir = r'F:python演示流浪地球计划'14 getFilepath(rootDir)

1.1 重点代码详解

1)执行流

rootDir:根目录(即需要查找的目录)

2)第7行 apath :文件的绝对路径

os.path.join(dirpath ,fileName) : 将当前目录和文件名组合

1.2 初级查找文件优缺点

优点:便捷,可以把该目录所有文件都查询出来。

缺点:无法根据文件名关键字或者指定文件类型进行筛选。

1.3 执行演示

初级查找文件findfile_v1.py确实是没有在带任何过滤的情况下,把该目录的所有文件都查询出来了。

ea92bfb5c387b66c321f47bc458ab432.png

2. 中级查找文件(findfile_v2.py)

 1import os 2 3def getFilepath(rootDir,filepathmsg,filetype): 4 filepathresult = []  5 for dirpath,dirNames,fileNames in os.walk(rootDir): 6 for fileName in fileNames: 7 apath = os.path.join(dirpath ,fileName)  8 apathname = os.path.splitext(apath)[0]  9 apathtype = os.path.splitext(apath)[1] 10 if filetype == apathtype:11 if filepathmsg in apathname: 12 filepathresult.append(apath)13 for i in range(len(filepathresult)):14 print(filepathresult[i])1516if __name__ == '__main__':17 rootDir = r'F:python演示流浪地球计划'18 filepathmsg = "2019年"19 filetype = ".txt"20 getFilepath(rootDir,filepathmsg,filetype)

2.1 重点代码详解

1)执行流

filepathmsg :文件名关键信息(字符串类型)

filetype :文件扩展名(字符串类型)

2) 第4行 filepathresult :为所需要的文件路径的集合

3)第8行 apathname = os.path.splitext(apath)[0]

4)第9行 apathtype = os.path.splitext(apath)[1]

os.path.splitext:返回一个除去扩展名的部分和扩展名的二元组

apathname:为路径+文件名,不包括扩展名

apathtype :为文件类型,得到"."+ "扩展名"

2.2 中级查找文件优缺点

优点:搜索唯一指定文件名关键字加指定的文件类型。

缺点:无法搜索多个文件名关键字或者多个指定的文件类型。

2.3 执行演示

中级查找文件findfile_v2.py,过滤信息为文件名信息"2019年"和文件类型".txt",符合该过滤信息的文件名(含子目录)都被筛选出来。有个要点,老铁们要注意,如果文件路径符合文件名关键字信息,也是会被筛选出来的!因为apathname包含路径和文件名(即除扩展名)。

6879064fb50d3742745a6f67d8b52e20.png

3. 高级查找文件(findfile_v3.py)

 1import os 2 3def getFilepath(rootDir,filepathmsg,filetype): 4 filepathresult = [] 5 for dirpath,dirNames,fileNames in os.walk(rootDir): 6 for fileName in fileNames: 7 apath = os.path.join(dirpath ,fileName) 8 apathname = os.path.splitext(apath)[0]  9 apathtype = os.path.splitext(apath)[1] 10 for i in filetype:11 if i in apathtype:12 for j in filepathmsg:13 if j in apathname: 14 filepathresult.append(apath)15 for i in range(len(filepathresult)):16 print(filepathresult[i])1718if __name__ == '__main__':19 rootDir = r'F:python演示流浪地球计划'20 filetype = [".TXT
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值