Python+PyQt5来实现文件高速查找

 更新时间:2023年07月19日 11:37:12   作者:W金刚葫芦娃W  
这篇文章主要为大家详细介绍了如何模拟Everything,即通过python+PyQt5来实现可视化文件的高速查找,文中的示例代码讲解详细,需要的可以参考一下

一、功能

模拟Everything,通过python+PyQt5来实现可视化文件的高速查找。

二、代码

import os
import threading
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QLabel, QLineEdit, QTextBrowser, QPushButton, QComboBox
from PyQt5.QtGui import QFont
from PyQt5.QtCore import Qt, pyqtSignal, QObject
 
 
class FileSearchThread(QObject):
    search_result_found = pyqtSignal(str)
    search_finished = pyqtSignal()
 
    def __init__(self, disk, search_text):
        super().__init__()
        self.disk = disk
        self.search_text = search_text
        self.found_files = []
 
    def search_files(self):
        for root, dirs, files in os.walk(self.disk):
            for file in files:
                if self.search_text.lower() in file.lower():
                    file_path = os.path.join(root, file)
                    self.found_files.append(file_path)
                    self.search_result_found.emit(file_path)
 
        self.search_finished.emit()
 
 
class FileSearchApp(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle('文件搜索')
        self.setGeometry(200, 600, 1340, 800)
 
        self.search_label = QLabel("搜索关键字:")
        self.search_label.setFont(QFont('Arial', 12))
        self.search_textbox = QLineEdit()
        self.search_textbox.setFont(QFont('Arial', 12))
 
        self.search_button = QPushButton('搜索')
        self.search_button.setFont(QFont('Arial', 12))
        self.search_button.clicked.connect(self.start_search)
 
 
        self.search_results = QTextBrowser()
        self.search_results.setFont(QFont('Arial', 12))
        self.search_status_label = QLabel()
        self.search_status_label.setFont(QFont('Arial', 12))
 
        layout = QVBoxLayout()
        layout.addWidget(self.search_label)
        layout.addWidget(self.search_textbox)
        layout.addWidget(self.search_button)
        layout.addWidget(self.search_status_label)
        layout.addWidget(self.search_results)
        self.setLayout(layout)
 
    def start_search(self,disks):
        disks= ['C:','D:','E:','F:']   #本地电脑的磁盘列表
        search_text = self.search_textbox.text()
        # print(disk)
        self.search_results.clear()
        self.search_status_label.setText("正在搜索...")
        self.search_status_label.adjustSize()
        for disk in disks:
            if disk and search_text:
                file_search_thread = FileSearchThread(disk, search_text)
                file_search_thread.search_result_found.connect(self.display_result)
                file_search_thread.search_finished.connect(self.search_finished)
 
                self.worker_thread = threading.Thread(target=file_search_thread.search_files)
                self.worker_thread.start()
 
    def display_result(self, file_path):
        self.search_results.append(file_path)
 
    def search_finished(self):
        self.search_status_label.setText("搜索完成")
        self.search_status_label.adjustSize()
        self.worker_thread.join()
 
 
if __name__ == '__main__':
    app = QApplication([])
    file_search_app = FileSearchApp()
    file_search_app.show()
    app.exec_()

三、运行结果

到此这篇关于Python+PyQt5来实现文件高速查找的文章就介绍到这了,更多相关Python文件查找内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 如何使用python的xml库实现自闭合标签

    如何使用python的xml库实现自闭合标签

    文章介绍了作者编写一个URDF格式化插件的初衷,目的是解决sw2urdf导出的URDF文件格式混乱的问题,本文结合实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧
    2025-01-01
  • Python图片检索之以图搜图

    Python图片检索之以图搜图

    由于很多论文里面的测试图片没有标号,就不能确定它们是Testset数据集中哪几张图片.为了能解决这个问题,需要完成以图片去搜索整个数据集文件目录的任务.本文有非常详细的图文示例,需要的朋友可以参考下
    2021-05-05
  • 跟老齐学Python之list和str比较

    跟老齐学Python之list和str比较

    list和str两种类型数据,有不少相似的地方,也有很大的区别。本讲对她们做个简要比较,同时也是对前面有关两者的知识复习一下,所谓“温故而知新”。
    2014-09-09
  • 详谈pandas中agg函数和apply函数的区别

    详谈pandas中agg函数和apply函数的区别

    下面小编就为大家分享一篇详谈pandas中agg函数和apply函数的区别,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • python图形界面教程Tkinter详解

    python图形界面教程Tkinter详解

    Python自带了tkinter模块,实质上是一种流行的面向对象的GUI工具包 TK 的Python编程接口,提供了快速便利地创建GUI应用程序的方法,下面这篇文章主要给大家介绍了关于python图形界面教程Tkinter的相关资料,需要的朋友可以参考下
    2022-12-12
  • python爬虫豆瓣网的模拟登录实现

    python爬虫豆瓣网的模拟登录实现

    这篇文章主要介绍了python爬虫豆瓣网的模拟登录实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • python3注册全局热键的实现

    python3注册全局热键的实现

    这篇文章主要介绍了python3注册全局热键的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • Python结合Free Spire.PDF for Python实现PDF页面旋转

    Python结合Free Spire.PDF for Python实现PDF页面旋转

    在日常办公或文档处理中,我们经常会遇到PDF页面方向错误的问题,本文将分享如何用 Python 结合 Free Spire.PDF for Python 库,高效、灵活地实现 PDF 页面旋转,需要的可以了解下
    2025-11-11
  • Python的输出格式化和进制转换介绍

    Python的输出格式化和进制转换介绍

    大家好,本篇文章主要讲的是Python的输出格式化和进制转换介绍,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-01-01
  • python自动裁剪图像代码分享

    python自动裁剪图像代码分享

    这篇文章主要介绍了python自动裁剪图像代码分享,具有一定参考价值,需要的朋友可以了解下。
    2017-11-11

最新评论