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

news2024/9/22 15:39:10

 目录

一、前言 

二、代码

三、结果


一、前言 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C++进阶】bitset位图介绍以及模拟实现

文章目录 位图介绍一、位图的引入二、位图的概念 位图模拟实现一、构造函数二、set,reset,test函数三、代码测试四、完整代码 位图介绍 一、位图的引入 先来看下边一道面试题: 给40亿个不重复的无符号整数,没排过序。给一个无符…

SAR ADC version2 ——ADC背景介绍

目录: ADC常用指标分类 静态性能:微分非线性:DNL 积分非线性:INL 仿真测试DNL:(码密度法)(code density&…

OpenCV 入门教程:像素访问和修改

OpenCV 入门教程:像素访问和修改 导语一、像素访问1.1 获取图像的大小1.2 访问图像的像素值1.3 修改图像的像素值 二、示例应用2.1 图像反转2.2 阈值化操作 三、总结 导语 在图像处理和计算机视觉领域,像素级操作是非常重要和常见的任务之一。通过像素访…

Python——将F12得到的请求头转换成其对应json格式

问题引入 最近在鼓捣爬虫准备爬爬学校网站,用到pthon的requests库发送get请求时需要提供headers. 需要将请求头转换成json格式的数据。json格式如下所示 headers{"Path":"xxx","User-Agent":"xxx" } 但是从网页上f12复…

21-注册中心与配置中心Nacos

已经使用过了Spring cloud提供的Geteway、openFeign。 1、注册中心与配置中心 1.1、注册中心 相当于通讯录,让应用之间相互认识。 用途: 实例的健康检查。 路由转发:为了控制成本,会对机器做动态扩容,此时IP就不固定了。 远程调用。 1.2、配置中心 动态修改线上的配…

深入解析MySQL视图、索引、数据导入导出:优化查询和提高效率

目录 1. 视图(View): 什么是视图? 为什么要使用视图? 视图的优缺点 1) 定制用户数据,聚焦特定的数据 2) 简化数据操作 3) 提高数据的安全性 4) 共享所需数据 5) 更改数据格式 6) 重用 SQL 语句 …

十一.Redis发布订阅

Redis发布订阅(pub/sub)是一种消息通信模式:发布者(pub)发送消息,订阅者(sub)接受消息。此种模式下,消息发布者和订阅者不进行直接通信,发布者客户端向指定的频道(channel) 发布消息,订阅该频道…

【MQTT】Esp32数据上传采集:最新mqtt插件(支持掉线、真机调试错误等问题)

前言 这是我在Dcloud发布的插件-最完整Mqtt示例代码(解决掉线、真机调试错误等问题),经过整改优化和替换Mqtt的js文件使一些市场上出现的问题得以解决,至于跨端出问题,可能原因有很多,例如,合法…

MySQL基础篇第3章(基本的SELECT语句)

文章目录 1、SQL概述1.1 SQL背景知识1.2 SQL分类 2、SQL语言的规则与规范2.1 基本规则2.2 SQL大小写规范 (建议遵守)2.3 注释2.4 命名规则2.5 数据导入指令 3、基本的SELECT语句3.0 SELECT...3.1 SELECT...FROM3.2 列的别名3.3 去除重复行3.4 空置参与运…

营销人累了看看这5部影片吧!保你再燃激情

市场瞬息万变,做营销需不断学习充电,除了看书听课之外看电影也是学习营销的有效方式。今天小马识途营销顾问给大家推荐5部市场营销人员必看的高评分电影,相信看完之后,会对你今后的发展影响深远!话不多说直接上干货&am…

并发编程 - Event Driven 设计模式(EDA)

文章目录 EDA 概述初体验EventEvent HandlersEvent Loop 如何设计一个Event-Driven框架同步EDA框架设计MessageChannelDynamic RouterEventEventDispatcher测试同步EDA架构类图 异步EDA框架设计抽象基类 AsyncChannelAsyncEventDispatcher 并发分发消息测试 EDA 概述 EDA&…

【计算机网络】第 2 课 - 计算机网络的性能指标

欢迎来到博主 Apeiron 的博客,祝您旅程愉快 ! 时止则止,时行则行。动静不失其时,其道光明。 目录 1、缘起 2、性能指标 2.1、速率 2.2、带宽 2.3、吞吐量 2.4、时延 2.5、时延带宽积 2.6、往返时间 2.7、利用率 2.8、丢…

【Cartopy学习系列】Cartopy中的投影类型总结

一、PlateCarree(圆柱投影) PlateCarree 是Cartopy的默认投影,投影将地物投影到圆柱面上再展开,常用来绘制世界地图。该投影具有经线或纬线方向等度数的特点,亦称等经纬度投影。 class cartopy.crs.PlateCarree(cent…

【Kafka】Kafka消费者

【Kafka】Kafka消费者 文章目录 【Kafka】Kafka消费者1. 消费方式1.1 消费者工作流程1.2 消费者组原理1.3 消费者组初始化流程1.4 消费者组详细消费流程1.5 消费者重要参数 2. 消费者API2.1 独立消费者案例2.2 订阅分区2.3 消费者组案例 1. 消费方式 pull(拉)模式:…

Linux上查看外接USB设备类型

最近遇到一个问题,需要在shell脚本中识别当前显示器的USB触屏线是否插入,并读取显示器名称,以确定是否是想要的。 解决思路: lsusb命令可以列出所有的外接USB设备: 其中 “Atmel Corp. Atmel maXTouch Digitizer” 即为…

rabbitmq使用springboot实现direct模式

一、 Direct模式 类型&#xff1a;direct特点&#xff1a;Direct模式是fanout模式上的一种叠加&#xff0c;增加了路由RoutingKey的模式。 二、coding Ⅰ 生产者 1、引入相应的pom文件 pom.xml <?xml version"1.0" encoding"UTF-8"?> <pro…

Linux 学习记录48(QT篇待完成)

Linux 学习记录48(QT篇) 本文目录 Linux 学习记录48(QT篇)一、1.2. 二、三、四、练习1. 自制文本编辑器(0. main.cpp(1. txt_window.h(2. txt_window.cpp 2. 登录界面完善 一、 1. 2. 二、 三、 四、 练习 1. 自制文本编辑器 (0. main.cpp #include "txt_window.h…

JavaWeb 笔记——5

JavaWeb 笔记——5 一、Filter1.1、概述1.2、Filter快速入门1.3、Filter执行流程1.4、Filter使用细节1.5、Filter-案例-登陆验证 二、Listener2.1、Listener概述与分类2.2、ServletContextListener使用 三、AJAX3.1、AJAX概述3.2、AJAX快速入门3.3、使用Ajax验证用户名是否存在…

《阿里大数据之路》研读笔记(3)事实表

不理解可以先看看这个例子 例子里的start_time可以看成下单时间 end看成确认收货时间 这个例子中累计快照事实表和拉链表类似 图解HIVE累积型快照事实表_累积快照事实表_小基基o_O的博客-CSDN博客 累计快照事实表 我的理解是 根据上面的例子 就是一行代表多个业务过程 每个…

day18 哈希表

题目一&#xff1a;两个数组的交集 题目描述 int* intersection(int* nums1, int nums1Size, int* nums2, int nums2Size, int* returnSize){//哈希表 int arr_hash[1000] {0};int *arr_result (int *)malloc(sizeof(int)* nums1Size);*returnSize 0;for(int i 0;i < nu…