利用python实现文件搜索功能

思路

首先需要获取路径下的文件名和文件夹名,然后根据用户输入的值,返回匹配的记录。

开始

这里是使用了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)

测试,可以看到同时匹配到了文件和文件夹
利用python实现文件搜索功能_第1张图片

你可能感兴趣的:(笔记,#,python,python)