思路
首先需要获取路径下的文件名和文件夹名,然后根据用户输入的值,返回匹配的记录。
开始
这里是使用了os.walk函数,需要import os 库文件。
介绍一下os.walk()
os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]])
- top:需要遍历的路径地址
- topdpwn:是否优先遍历top路径,否则将会优先遍历top下的子目录
- oneerror:当 walk 需要异常时,调用一个 callable 对象
- followlinks:是否遍历快捷方式的真实路径
- os.walk的返回值是一个元组,分别是top的路径地址,top下面所有的文件夹名,top下面所有的文件名
首先写一个函数来获取所有的文件名和文件夹名称
def lis():
t=[]
for root, dirs, files in os.walk("/home/linc/文档/文件遍历",topdown=1):#优先top目录
#os.walk会返回一个三元组分别存储了当前目录地址,该地址下所有的目录地址,该目录下所有的文件地址
for name in files:
#print(os.path.join(root, name))
t.append(os.path.join(root, name))
for name in dirs:
#print(os.path.join(root, name))
t.append(os.path.join(root, name))
return t #返回索引
Flist=lis()
print(Flist)
这样就相当于建立了一个索引,接下只需要获取用户的输入,在把输入的值放到索引中匹配就好了
那么最后的代码就是
import os
def lis():
t = []
for root, dirs, files in os.walk("/home/linc/文档/文件遍历",topdown=1):#优先top目录
#os.walk会返回一个三元组分别存储了当前目录地址,该地址下所有的目录地址,该目录下所有的文件地址
for name in files:
#print(os.path.join(root, name))
t.append(os.path.join(root, name))
for name in dirs:
#print(os.path.join(root, name))
t.append(os.path.join(root, name))
return t
Flist = lis()
IN = input("请输入关键字")
for i in Flist:#遍历索引
if IN in i:#如果输入的值有在索引记录中存在
print(i)
测试,可以看到同时匹配到了文件和文件夹