Python脚本小工具之文件与内容搜索

 目录

一、前言 

二、代码

三、结果


一、前言 

    ​日常工作中,经常需要在指定路径下查找指定类型的文件,或者是指定内容的查找,在window环境中,即可以使用一些工具如notepad或everything,也可以使用python脚本。但在linux环境下,则需用python脚本

二、代码

    ​代码中定义一个类包含3个函数

listDir:查找指定目录下的所有文件,包含子目录下的文件,返回包含文件名和路径组成的字典

flisttype:在指定目录下查找文件名包含指定名称的文件,返回文件名和对应的路径的字典

fcontfind:文件内容查找,返回包含指定内容文件的路径,输入为需查找文件组成的列表fdict和需查找的内容cont

import os
"""内容的查找只能针对纯文本文档,对word、excel之类的文件无效"""
class file_content_search:
    def __init__(self):
        self.allfile={}
        self.typefile = {}
        self.contfile=[]
    #查找指定目录下的所有文件,包含子目录下的文件,返回包含文件名和路径组成的字典
    def listDir(self,rootDir):
        for filename in os.listdir(rootDir):
            pathname = os.path.join(rootDir, filename)
            pathname =pathname.replace("\\","/")    #将双斜杠变成单斜杠,双斜杠路径无效
            if (os.path.isfile(pathname)):
                self.allfile[filename]=pathname
            else:
                self.listDir(pathname)
        return(self.allfile)
    #在指定目录下查找文件名包含指定名称的文件,返回文件名和对应的路径的字典
    def flisttype(self,allfile1,listtype):
        for ftype in listtype:
            for fname,fpath in allfile1.items():
                if ftype in fname:
                    self.typefile[fname]=fpath
        return(self.typefile)

    #文件内容查找,返回包含指定内容文件的路径,输入为需查找文件组成的列表fdict和需查找的内容cont
    def fcontfind(self,fdict,cont):
        for fname,fpath in fdict.items():
            with open(fpath, "r",encoding="gbk",errors="ignore") as f:
                content = f.read()
                result = content.find(cont)
                if result != -1:
                    print("Found at index", result)
                    self.contfile.append(fpath)
                # else:
                #     print("Not found,")
        return(self.contfile)
if __name__=="__main__":
    file_path=r"C:\Users\Administrator\Desktop\计划"
    file_find=file_content_search()   #类实例化
    file_result=file_find.listDir(file_path)
    print(file_result)
    type = ["txt"]    #指定查找的文件类型
    ftype_find=file_find.flisttype(file_result,type)  #使用上一个函数listDir中返回的文件列表
    print(ftype_find)
    cont="生活"       #指定查找的内容
    fcont_find=file_find.fcontfind(ftype_find,cont)
    print(fcont_find)

三、结果

文件查找

Python脚本小工具之文件与内容搜索_第1张图片

 

查找xmind文件

Python脚本小工具之文件与内容搜索_第2张图片

 

查找txt文件包含“生活”的文件

Python脚本小工具之文件与内容搜索_第3张图片

 

你可能感兴趣的:(python,python,开发语言,文件查找,内容查找)