Python+PyQt5來實(shí)現(xiàn)文件高速查找
一、功能
模擬Everything,通過python+PyQt5來實(shí)現(xiàn)可視化文件的高速查找。
二、代碼
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("搜索關(guān)鍵字:")
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_()三、運(yùn)行結(jié)果

到此這篇關(guān)于Python+PyQt5來實(shí)現(xiàn)文件高速查找的文章就介紹到這了,更多相關(guān)Python文件查找內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
如何使用python的xml庫實(shí)現(xiàn)自閉合標(biāo)簽
文章介紹了作者編寫一個(gè)URDF格式化插件的初衷,目的是解決sw2urdf導(dǎo)出的URDF文件格式混亂的問題,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧2025-01-01
詳談pandas中agg函數(shù)和apply函數(shù)的區(qū)別
下面小編就為大家分享一篇詳談pandas中agg函數(shù)和apply函數(shù)的區(qū)別,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-04-04
python爬蟲豆瓣網(wǎng)的模擬登錄實(shí)現(xiàn)
這篇文章主要介紹了python爬蟲豆瓣網(wǎng)的模擬登錄實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08
python3注冊(cè)全局熱鍵的實(shí)現(xiàn)
這篇文章主要介紹了python3注冊(cè)全局熱鍵的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03
Python結(jié)合Free Spire.PDF for Python實(shí)現(xiàn)PDF頁面旋轉(zhuǎn)
在日常辦公或文檔處理中,我們經(jīng)常會(huì)遇到PDF頁面方向錯(cuò)誤的問題,本文將分享如何用 Python 結(jié)合 Free Spire.PDF for Python 庫,高效、靈活地實(shí)現(xiàn) PDF 頁面旋轉(zhuǎn),需要的可以了解下2025-11-11
Python的輸出格式化和進(jìn)制轉(zhuǎn)換介紹
大家好,本篇文章主要講的是Python的輸出格式化和進(jìn)制轉(zhuǎn)換介紹,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下2022-01-01

