一个检索绝对路径下指定后缀或关键字的小代码

Posted ygeloutingyu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个检索绝对路径下指定后缀或关键字的小代码相关的知识,希望对你有一定的参考价值。

首先了解一下几个文件目录处理的函数:

os.listdir(path)#获取path目录下的所有文件

os.path.join(path, file_name)#获取path于file_name组合后的路径,相当于 path + ‘/‘ + file_name

strip(char) 方法用于移除字符串头尾指定的字符(默认为空格)

 

检索指定目录(绝对路径)下的 py 后缀文件

思路:思路非常简单,对于当前目录,直接遍历其所有子目录和文件,对于目录继续递归,对于文件则判断其后缀是否是 .py,再将符合条件的文件名放个列表中即可

代码:

技术分享图片
 1 #!/usr/bin/python3
 2 
 3 import os
 4 import os.path
 5 
 6 l = []
 7 def get_file(path, l):
 8     file_list = os.listdir(path)#获取path目录下的所有文件
 9     for file_name in file_list:
10         #获取path于file_name组合后的路径,即path路径下某个子目录或子文件的目录
11         path_tmp = os.path.join(path, file_name)
12         # path_tmp = path + ‘/‘ + file_name#和上面的语句等价
13         if os.path.isdir(path_tmp):#如果是目录
14             get_file(path_tmp, l)#递归查找
15         elif str(file_name[-3:]) == .py:#如果不是目录,则比较后缀名
16             l.append(path_tmp)#如果是.py后缀,则将路径加入列表l中
17 
18 if __name__ == __main__:
19     path = input(请输入路径(绝对路径):).strip()
20     get_file(path, l)
21     
22     print(在 % s 目录及其子目录下找到 %d 个 py 文件 % (path, len(l)))
23     if(len(l)):
24         print(分别为:)
25 
26     for file_path in l:
27         print(file_path)
View Code

 

显然,我们只要对上面的代码做点修改即可让其检索指定目录下的指定后缀文件

代码:

技术分享图片
 1 #!/usr/bin/python3
 2 
 3 import os
 4 import os.path
 5 
 6 l = []
 7 def get_file(path, l, suffix):
 8     file_list = os.listdir(path)#获取path目录下的所有文件
 9     # print(file_list)
10     for file_name in file_list:
11         #获取path于file_name组合后的路径,即path路径下某个子目录或子文件的目录
12         path_tmp = os.path.join(path, file_name)
13         # path_tmp = path + ‘/‘ + file_name#和上面的语句等价
14         if os.path.isdir(path_tmp):#如果是目录
15             get_file(path_tmp, l, suffix)#递归查找
16         elif str(file_name[-len(suffix):]) == suffix:#如果不是目录,则比较后缀名
17             l.append(path_tmp)#如果是suffix后缀,则将路径加入列表l中
18 
19 if __name__ == __main__:
20     path = input(请输入路径(绝对路径):).strip()#strip() 方法用于移除字符串头尾指定的字符(默认为空格)
21     suffix = input(请输入指定后缀:).strip()
22 
23     get_file(path, l, suffix)
24     
25     print(在 % s 目录及其子目录下找到 %d 个 py 文件 % (path, len(l)))
26     if(len(l)):
27         print(分别为:)
28 
29     for file_path in l:
30         print(file_path)
View Code

 

我们再将思路拓展一点点,写个检索指定路径下包含指定关键字的文件的小代码:

代码:

技术分享图片
 1 #!/usr/bin/python3
 2 
 3 import os
 4 import os.path
 5 
 6 l = []
 7 def get_file(path, l, keyword):
 8     file_list = os.listdir(path)#获取path目录下的所有文件
 9     # print(file_list)
10     for file_name in file_list:
11         #获取path于file_name组合后的路径,即path路径下某个子目录或子文件的目录
12         path_tmp = os.path.join(path, file_name)
13         # path_tmp = path + ‘/‘ + file_name#和上面的语句等价
14         if os.path.isdir(path_tmp):#如果是目录
15             get_file(path_tmp, l, keyword)#递归查找
16         elif file_name.find(keyword) != -1:#如果不是目录,则比较后缀名
17             l.append(path_tmp)#如果包含指定关键字,则将路径加入列表l中
18 
19 if __name__ == __main__:
20     path = input(请输入路径(绝对路径):).strip()#strip() 方法用于移除字符串头尾指定的字符(默认为空格)
21     keyword = input(请输入指定关键字:).strip()
22 
23     get_file(path, l, keyword)
24     
25     print(在 % s 目录及其子目录下找到 %d 个 py 文件 % (path, len(l)))
26     if(len(l)):
27         print(分别为:)
28 
29     for file_path in l:
30         print(file_path)
View Code

 

以上是关于一个检索绝对路径下指定后缀或关键字的小代码的主要内容,如果未能解决你的问题,请参考以下文章

idea统计关键字个数量

C#如何遍历指定目录以及指定目录下所有子文件夹,并获取除指定文件类型以外的所有文件的绝对路径?

用于从 cloudkit 检索单列的代码模式/片段

java代码实现输出指定以.java结尾的文件的绝对路径

如何检索给定相对路径的绝对路径

Angularjs - TypeError:路径必须是绝对路径或指定根到 res.sendFile