用Pyhton实现一个简单的文件搜索工具
每个人的电脑中都有许多的文件,想要快速查找到这些文件,就要使用到文件查找工具。
比如非常好用的everything。
现在我们就来用Pyhthon实现我们的文件查找工具。
原理以及预期效果:递归查找,遇到子目录,就进入子目录,进行查找
运用的模块函数:代码语言:javascript复制import os // os.walk运用这个函数,只需要使用简单的循环,就可以完成递归遍历的过程。
就不需要手写递归了。
代码实现:首先,我们当然要引入os模块。
并且简单的与用户进行交互。
代码语言:javascript复制import os
inputPath = input("请输入要搜索的路径:")
pattern = input("请输入要搜索的关键词:")接下来就要使用我们的 os.walk
代码语言:javascript复制import os
inputPath = input("请输入要搜索的路径:")
pattern = input("请输入要搜索的关键词:")
for dirpath,dirnames,filenames in os.walk(inputPath):os.walk 每次调用都能自动的对子目录进行递归,使用下面的循环将所有的路径获取出来。
dirpath 遍历到当前位置的路径。
dirnames 当前位置下有多少目录,是一个列表。
filenames 当前目录下有哪些文件名,是一个列表。
下面我们用一串代码,帮助我们理解一下这个函数。
代码语言:javascript复制import os
inputPath = input("请输入要搜索的路径:")
pattern = input("请输入要搜索的关键词:")
# os.walk 只需要简单的循环就可以完成递归遍历的过程,就不必手写递归代码了
# dirpath 遍历到当前位置的路径
# dirnames 当前位置下有多少目录,成为一个列表
# filenames 当前目录下有哪些文件名,成为一个列表
# os.walk 每次调用都能自动的对子目录进行递归,使用下面的循环将所有的路径获取出来
for dirpath,dirnames,filenames in os.walk(inputPath):
print("---------------------------------------")
print(f"dirpath = {dirpath}")
print("dirnames:")
for name in dirnames:
print(name)
print("filenames:")
for name in filenames:
print(name) 效果如下:
上面就是我们遍历的结果了。
接下来我们具体实现我们的代码。
代码语言:javascript复制import os
inputPath = input("请输入要搜索的路径:")
pattern = input("请输入要搜索的关键词:")
# os.walk 只需要简单的循环就可以完成递归遍历的过程,就不必手写递归代码了
# dirpath 遍历到当前位置的路径
# dirnames 当前位置下有多少目录,成为一个列表
# filenames 当前目录下有哪些文件名,成为一个列表
# os.walk 每次调用都能自动的对子目录进行递归,使用下面的循环将所有的路径获取出来
for dirpath,dirnames,filenames in os.walk(inputPath):
# print("---------------------------------------")
# print(f"dirpath = {dirpath}")
# print("dirnames:")
# for name in dirnames:
# print(name)
# print("filenames:")
# for name in filenames:
# print(name)
for f in filenames:
if pattern in f:
print(f"{dirpath}/{f}")查到到我们的路径和文件进行输出。
很快我们就查找到我们的文件了。