Python+PyQt5來(lái)實(shí)現(xiàn)文件高速查找
更新時(shí)間:2023年07月19日 11:37:12 作者:W金剛葫蘆娃W
這篇文章主要為大家詳細(xì)介紹了如何模擬Everything,即通過(guò)python+PyQt5來(lái)實(shí)現(xiàn)可視化文件的高速查找,文中的示例代碼講解詳細(xì),需要的可以參考一下
一、功能
模擬Everything,通過(guò)python+PyQt5來(lái)實(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來(lái)實(shí)現(xiàn)文件高速查找的文章就介紹到這了,更多相關(guān)Python文件查找內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
深入理解python中sort()與sorted()的區(qū)別
Python list內(nèi)置sort()方法用來(lái)排序,也可以用python內(nèi)置的全局sorted()方法來(lái)對(duì)可迭代的序列排序生成新的序列。這篇文章主要介紹了python中sort()與sorted()的區(qū)別,需要的朋友可以參考下2018-08-08
matplotlib中l(wèi)egend位置調(diào)整解析
這篇文章主要介紹了matplotlib中l(wèi)egend位置調(diào)整解析,具有一定借鑒價(jià)值,需要的朋友可以參考下。2017-12-12
Python sqlalchemy時(shí)間戳及密碼管理實(shí)現(xiàn)代碼詳解
這篇文章主要介紹了Python sqlalchemy時(shí)間戳及密碼管理實(shí)現(xiàn)代碼詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08
PyQt5+QtChart實(shí)現(xiàn)繪制曲線圖
QChart是一個(gè)QGraphicScene中可以顯示的QGraphicsWidget。本文將利用QtChart實(shí)現(xiàn)曲線圖的繪制,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2022-12-12

