電腦指定路徑下檔案查找,并封裝為可執行程式
- 1 需求
- 2 簡單的模板
- 3 代碼優化并設計可視化界面
- 4 再接再厲嘗試tkinter及全部代碼
- 5 封裝小程式
軟體網盤提取碼:9qke
手動反爬蟲,禁止轉載:原博地址 https://blog.csdn.net/lys_828/article/details/115771446
知識梳理不易,請尊重勞動成果,文章僅發布在CSDN網站上,在其他網站看到該博文均屬于未經作者授權的惡意爬取資訊
1 需求
在電腦安裝軟體的時候經常會遇到有些問題導致沒有辦法安裝,最簡單粗暴的方式就是把這個軟體所有的相關的檔案全部洗掉,那么問題就來了,要洗掉的檔案怎么找呢?因此也就有了這個需求(實際上今天寫這篇文章就是簡單的因為學妹把軟體刪了,但是找不到之前軟體里面處理的檔案,嗚嗚嗚~~~)

2 簡單的模板
直接給出代碼,需要用到之前梳理的辦公自動化相關的知識,感興趣的可以了解一下:自動化辦公專題,代碼如下:
import glob
import os
def find_files(path,content='demo'):
os.chdir(path)
files = glob.glob(f'**/*{content}*', recursive = True)
print(f'在當前路徑下:{path}\n一共找到{len(files)}個檔案')
print('-'*20)
print(files)
find_files(r'C:\Users\86177\Desktop','人員')
接下來就是進行測驗資料的創建和實作程式封裝決議了,為了方便演示,現在桌面創建三個資料(檔案/檔案夾),分別是:人員.txt、企業人員資訊、測驗\測驗人員,
- 第一個是檔案資料,要查找的文字是在開頭的位置、
- 第二個資料是空檔案夾,要查找的文字內容在中間、
- 第三個就是一個檔案夾中的檔案,除去后綴名,要查找的內容是在末尾
圖示資料如下

呼叫函式,執行代碼最后資料的結果為:(在使用這個函式的時候,只需要指定一下路徑和要查找的內容就行了)

3 代碼優化并設計可視化界面
上述的函式,如果直接在編輯器中打開,然后輸入路徑和查找內容,程式也就自動執行了,但是需要有python的環境,而且輸入路徑的時候有轉義字符的干擾,因此,就想著直接封裝為一個小程式,用的時候直接雙擊就能彈出來一個小視窗,然后讓我選擇路徑地址和輸入內容就完美了,
使用PySimpleGUI創建可視化界面,這里很簡潔,就是兩個輸入框加上一個確定按鈕即可,然后獲取用戶指定的路徑和輸入的查找內容,如下

代碼決議如下,前面的函式不要動,直接加載創建視窗的代碼
import PySimpleGUI as sg
def find_files(path,content='demo'):
os.chdir(path)
files = glob.glob(f'**/*{content}*', recursive = True)
print(f'在當前路徑下:{path}\n一共找到{len(files)}個檔案')
print('-'*20)
print(files)
layout = [
[sg.FolderBrowse(' Path :'),sg.InputText()], #第一行添加一個路徑選擇按鈕和路徑輸入框,可以通過按鈕選擇也可手動輸入
[sg.Text('Content:'),sg.InputText()], #第二行就是設定查找內容輸入框
[sg.Text(' '*40),sg.OK(size = (10,1))] #第三問就是放置確認按鈕,為了保證按鈕在中間的位置,兩端可以塞空字串
]
window = sg.Window('檔案查找小程式', layout)
while True:
event, values = window.read()
if event == sg.WIN_CLOSED or event == 'Exit':
break
# print(event,values) 通過輸出的values,可以找到我們要的內容
find_files(values[0],values[1]) #這里呼叫函式進行查找檔案
print() #換行,方便下次內容的查找
window.close()
首先還是測驗最初的三個資料結果如下:(輸出結果沒有問題)

然后就是就是測驗一下c盤內的檔案和d盤中的檔案,先測驗c盤中檔案,比如找個包含20new的檔案(一個新聞分類的資料集),點擊OK后,這個軟體直接崩潰了,原因就是C盤的檔案太多了,然后直接注釋掉創建界面的代碼,直接跑函式,可以發現這個查找程序花了106.3s,也難怪使用這個小工具會直接奔潰

說明通過PySimpleGUI創建點簡單的小程式還行,一旦運行操作過于耗時,程式也就自動崩潰了
4 再接再厲嘗試tkinter及全部代碼
又回到了我最喜歡的tkinter制作小玩意的時候了,首先還是一樣,加載一下制作小東西的模板
from tkinter import * #匯入tkinter中所有的方法
from tkinter import filedialog, messagebox #這兩個需要單獨匯入
from tkinter.ttk import Scrollbar, Checkbutton, Label, Button #匯入ttk模塊中的指定幾個組件
#繼承Tk這個類
class FindFiles(Tk):
def __init__(self): #初始化自己的創建的EditorPlus類
super().__init__() #在繼承Tk這個類的基礎上在自己的類中添加內容
self._set_window_() #設定程式運行主視窗
self._set_content_()
#設定初始化視窗的屬性
def _set_window_(self):
self.title("檔案查找器") #視窗名稱
scn_width, scn_height = self.maxsize() #獲得程式運行機器的解析度(螢屏的長和寬)
wm_val = '340x80+{}+{}'.format((scn_width - 750) // 2, (scn_height - 450) // 2)
self.geometry(wm_val) #將視窗設定在螢屏的中間
self.protocol('WM_DELETE_WINDOW', self.exit_editor) #設定視窗關閉提醒
def exit_editor(self):
if messagebox.askokcancel('退出?','確定退出嗎?'): #設定文本提示框
self.destroy() #滿足條件的話主視窗退出
def _set_content_(self):
Label(self, text='請輸入檔案路徑',width=15).grid(row=0, column=0) #設定提醒輸入路徑的標簽
self.path = Entry(self,width = 30) #設定路徑輸入框
self.path.grid(row=0, column=1) #放置位置
Label(self, text='請輸入查找內容',width=15).grid(row=1, column=0) #設定郵箱輸入標簽
self.content = Entry(self,width = 30) #設定郵箱地址輸入框
self.content.grid(row=1, column=1) ##放置位置
Button(self, text="確定", command=self.onclick).grid(row = 2, column = 0, columnspan = 2) #放置確定按鈕
def onclick(self):
path = self.path.get() #獲取路徑
content = self.content.get() #獲取郵箱地址
self.find_files(path,content)
def find_files(self,path,content='demo'):
os.chdir(path)
files = glob.glob(f'**/*{content}*', recursive = True)
print(f'在當前路徑下:{path}\n一共找到{len(files)}個檔案')
print('-'*20)
print(files)
if __name__ == '__main__': #代碼分塊
app = FindFiles() #類的實體化
app.mainloop() #程式運行
可以參考之前寫的自制市區縣經緯度查詢工具并將資料保存本地,這里就是將那里面的代碼直接拿過來,然后修改了部分內容就OK了,然后執行程式,等待一陣子后,程式輸出了結果,雖然中間也有一陣子顯示未回應,但是不影響最終的結果輸出

最終全部的代碼如下:(太晚了,關于打開檔案夾的操作就沒有寫了,明天有事,抽空有時間再補上)
# -*- coding:utf-8 -*-
import glob
import os
import PySimpleGUI as sg
# layout = [
# [sg.FolderBrowse(' Path :'),sg.InputText()],
# [sg.Text('Content:'),sg.InputText()],
# [sg.Text(' '*40),sg.OK(size = (10,1))]
# ]
# window = sg.Window('檔案查找小程式', layout)
# while True:
# event, values = window.read()
# if event == sg.WIN_CLOSED or event == 'Exit':
# break
# # print(event,values)
# find_files(values[0],values[1])
# print()
# window.close()
from tkinter import * #匯入tkinter中所有的方法
from tkinter import filedialog, messagebox #這兩個需要單獨匯入
from tkinter.ttk import Scrollbar, Checkbutton, Label, Button #匯入ttk模塊中的指定幾個組件
#繼承Tk這個類
class FindFiles(Tk):
def __init__(self): #初始化自己的創建的EditorPlus類
super().__init__() #在繼承Tk這個類的基礎上在自己的類中添加內容
self._set_window_() #設定程式運行主視窗
self._set_content_()
#設定初始化視窗的屬性
def _set_window_(self):
self.title("檔案查找器") #視窗名稱
scn_width, scn_height = self.maxsize() #獲得程式運行機器的解析度(螢屏的長和寬)
wm_val = '340x80+{}+{}'.format((scn_width - 750) // 2, (scn_height - 450) // 2)
self.geometry(wm_val) #將視窗設定在螢屏的中間
self.protocol('WM_DELETE_WINDOW', self.exit_editor) #設定視窗關閉提醒
def exit_editor(self):
if messagebox.askokcancel('退出?','確定退出嗎?'): #設定文本提示框
self.destroy() #滿足條件的話主視窗退出
def _set_content_(self):
Label(self, text='請輸入檔案路徑',width=15).grid(row=0, column=0) #設定提醒輸入路徑的標簽
self.path = Entry(self,width = 30) #設定路徑輸入框
self.path.grid(row=0, column=1) #放置位置
Label(self, text='請輸入查找內容',width=15).grid(row=1, column=0) #設定郵箱輸入標簽
self.content = Entry(self,width = 30) #設定郵箱地址輸入框
self.content.grid(row=1, column=1) ##放置位置
Button(self, text="確定", command=self.onclick).grid(row = 2, column = 0, columnspan = 2) #放置確定按鈕
def onclick(self):
path = self.path.get() #獲取路徑
content = self.content.get() #獲取郵箱地址
self.find_files(path,content)
def find_files(self,path,content='demo'):
os.chdir(path)
files = glob.glob(f'**/*{content}*', recursive = True)
print(f'在當前路徑下:{path}\n一共找到{len(files)}個檔案')
print('-'*20)
print(files)
print()
if __name__ == '__main__': #代碼分塊
app = FindFiles() #類的實體化
app.mainloop() #程式運行
5 封裝小程式
這里使用pyinstaller模塊,關于這個模塊的使用可以參照:將python代碼打包成系統可執行檔案(Pyinstaller模塊)
在py檔案所在目錄打開命令列,然后執行如下指令
pyinstaller -F 檔案查找小軟體.py -n 檔案查找小軟體
期間可能會有360跳出來阻止你生成小軟體,這時候果斷把360給退出

最后軟體就打包好了,生成的軟體就在dist檔案夾中,這里沒有指定圖片,有興趣的話也可以指定一下圖片,鏈接中有如何指定軟體的圖片

最后就是測驗一下軟體的使用了,使用結果如下,很完美的解決問題

撒花??ヽ(°▽°)ノ?
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/277334.html
標籤:python
上一篇:Python進階筆記
