Python+wxPython實現(xiàn)文件內容搜索工具
前言
在本篇文章中,我們將介紹如何使用 wxPython 庫創(chuàng)建一個簡單的文件搜索工具。這個工具允許用戶選擇一個文件夾,并在該文件夾中的所有 .py 文件中查找指定的文字,并顯示匹配的位置。C:\pythoncode\blog\searchwordinpyfile.py
效果如下
代碼實現(xiàn)
我們首先導入必要的模塊:
import os import wx
接下來,我們定義一個名為 SearchFrame
的類,這個類繼承自 wx.Frame
,用于創(chuàng)建搜索工具的主窗口。
class SearchFrame(wx.Frame): def __init__(self, parent, title): super(SearchFrame, self).__init__(parent, title=title, size=(400, 400)) # 創(chuàng)建界面元素 self.panel = wx.Panel(self) # ... 省略其他界面元素的創(chuàng)建和布局代碼 ... # 綁定按鈕點擊事件 self.folder_button.Bind(wx.EVT_BUTTON, self.on_select_folder) self.search_button.Bind(wx.EVT_BUTTON, self.on_search) # ... 省略其他事件處理函數的實現(xiàn) ... # 創(chuàng)建應用程序對象 app = wx.App() frame = SearchFrame(None, title="文件搜索") frame.Show() # 運行應用程序主循環(huán) app.MainLoop()
以上代碼中,我們創(chuàng)建了一個 SearchFrame
類,并在其構造函數中初始化界面元素,并綁定了按鈕的點擊事件。接下來,我們定義了兩個事件處理函數 on_select_folder
和 on_search
,分別用于處理選擇文件夾按鈕和搜索按鈕的點擊事件。
在 on_select_folder
函數中,我們使用 wx.DirDialog
創(chuàng)建了一個選擇文件夾的對話框,并獲取用戶選擇的文件夾路徑。
在 on_search
函數中,我們首先獲取用戶選擇的文件夾路徑和搜索文字,然后遍歷指定文件夾下的所有 .py 文件,打開每個文件并讀取內容,查找是否包含搜索文字,如果存在匹配,則記錄匹配的位置。
最后,我們創(chuàng)建了一個 wxPython 的 App 對象,并創(chuàng)建了一個 SearchFrame
實例,并顯示在界面上。通過調用 app.MainLoop()
,我們使程序進入事件處理循環(huán),等待用戶的操作。
全部代碼
import os import wx class SearchFrame(wx.Frame): def __init__(self, parent, title): super(SearchFrame, self).__init__(parent, title=title, size=(400, 400)) # 創(chuàng)建界面元素 self.panel = wx.Panel(self) self.folder_button = wx.Button(self.panel, label="選擇文件夾") self.search_label = wx.StaticText(self.panel, label="搜索文字:") self.search_text = wx.TextCtrl(self.panel) self.search_button = wx.Button(self.panel, label="搜索") self.memo = wx.TextCtrl(self.panel, style=wx.TE_MULTILINE) # 設置界面布局 sizer = wx.BoxSizer(wx.VERTICAL) sizer.Add(self.folder_button, 0, wx.ALL, 5) sizer.Add(self.search_label, 0, wx.ALL, 5) sizer.Add(self.search_text, 0, wx.EXPAND|wx.ALL, 5) sizer.Add(self.search_button, 0, wx.ALL, 5) sizer.Add(self.memo, 1, wx.EXPAND|wx.ALL, 5) self.panel.SetSizer(sizer) # 綁定按鈕點擊事件 self.folder_button.Bind(wx.EVT_BUTTON, self.on_select_folder) self.search_button.Bind(wx.EVT_BUTTON, self.on_search) def on_select_folder(self, event): dialog = wx.DirDialog(self, "選擇文件夾", style=wx.DD_DEFAULT_STYLE) if dialog.ShowModal() == wx.ID_OK: folder_path = dialog.GetPath() self.folder_button.SetLabel(folder_path) dialog.Destroy() def on_search(self, event): folder_path = self.folder_button.GetLabel() search_text = self.search_text.GetValue() matches = [] # 遍歷指定文件夾下的所有 .py 文件 for root, dirs, files in os.walk(folder_path): for file in files: if file.endswith(".py"): file_path = os.path.join(root, file) with open(file_path, "r", encoding="utf-8") as f: content = f.read() if search_text in content: match_positions = [pos for pos in range(len(content)) if content.startswith(search_text, pos)] matches.append((file_path, match_positions)) # 在 Memo 組件中顯示找到的文件名和文字位置 # self.memo.Clear() for match in matches: file_path, positions = match self.memo.AppendText(f"文件名: {file_path}\n") for position in positions: self.memo.AppendText(f"文字位置: {position}\n") self.memo.AppendText("\n") # 創(chuàng)建應用程序對象 app = wx.App() frame = SearchFrame(None, title="文件搜索") frame.Show() # 運行應用程序主循環(huán) app.MainLoop()
總結
通過使用 wxPython 庫,我們創(chuàng)建了一個簡單的文件搜索工具,實現(xiàn)了選擇文件夾、輸入搜索文字并點擊搜索按鈕的功能。在指定的文件夾中,我們遍歷了所有的 .py 文件,并查找包含搜索文字的位置,將結果顯示在界面上。
到此這篇關于Python+wxPython實現(xiàn)文件內容搜索工具的文章就介紹到這了,更多相關Python wxPython文件內容搜索內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
在pytorch 中計算精度、回歸率、F1 score等指標的實例
今天小編就為大家分享一篇在pytorch 中計算精度、回歸率、F1 score等指標的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-01