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

news/2024/7/16 6:45:31

 目录

一、前言 

二、代码

三、结果


一、前言 

    ​日常工作中,经常需要在指定路径下查找指定类型的文件,或者是指定内容的查找,在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)

三、结果

文件查找

 

查找xmind文件

 

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

 


http://www.niftyadmin.cn/n/3656337.html

相关文章

[翻译]脚本引擎实现 - 第四部分 符号表和文法树

原文地址:http://www.flipcode.com/articles/scripting_issue04.shtml 作者:Jan Niestadt译者:Tony Qu介绍既然我们在上两部分中做了一些有益的事,我们就需要把我们从程序的数据结构中收集的数据保存起来,这就是我们接…

关于VS2005中的Code Snippets Manager的问题及解决

Code Snippets Manager是VS2005专门用来管理代码块智能感知的工具。然而,使用它并没有预想中的那么顺利,特别是在做过多次目录添加和删除之后,可能出现添加在列表中的目录无法在智能感知列表中显示出来的情况;甚至会出现列表当中明…

控制台界面控制(九):读取键盘操作

本文为转载文档,原文链接为:http://blog.csdn.net/bnb45/article/details/8035346 读取键盘操作指的是,当我们输入什么的时候,控制台可以通过函数截获,这时候可以在里面写下要进行的操作。因为键盘的操作是连续的&…

[翻译]脚本引擎实现 - 第三部分 解析器

原文地址:http://www.flipcode.com/articles/scripting_issue03.shtml 作者:Jan Niestadt译者:Tony Qu介绍第二部分的程序运行得很好,它把程序转换为符号(token),所有的关键字、操作符、标点符号、标识符和常数都马上被…

控制台界面控制(十):读取鼠标操作

本文为转载文档,原文链接:http://blog.csdn.net/bnb45/article/details/8042819 我在看到这一章之前一直不知道控制台也能通过鼠标来操作。控制台的鼠标操作需要得到鼠标位置信息,左右键信息,单双击等等。 效果 当鼠标在控制台范围…

firefox下几个实用的免费开发插件

今天在看Ajax基础教程,看到书中推荐了几个不错的工具WebDeveloper提供了许多开发中十分有用的环境模拟工具,如禁用JavaScript,描出页面中的隐藏表单等,对于web脚本开发人员特别有用,而且它是firefox插件下载地址&#…

键盘按键数字对照表

本文为转载文档,原文地址:http://blog.csdn.net/bnb45/article/details/8035291 扫描码和虚拟码有对应的关系,但它们是不同的。键盘扫描码和具体的硬件有关,不同的厂商对同一个按键的扫描码可能不同。计算机先获得扫描码&#xff…

关于asp.net Session丢失问题的总结

更完整的关于asp.net session 丢失问题的帖子请见下文:理解Session State模式ASP.NET SESSION丢失FAQ [翻译] asp中Session的工作原理:asp的Session是具有进程依赖性的。ASP Session状态存于IIS的进程中,也就是inetinfo.exe这个程序。所以当i…