思路
首先需要获取路径下的文件名和文件夹名,然后根据用户输入的值,返回匹配的记录。
开始
这里是使用了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 osdef 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)
测试,可以看到同时匹配到了文件和文件夹