軟體網路硬碟提取碼:9qke
手動反爬蟲,禁止轉載:原博地址 https://blog.csdn.net/lys_828/article/details/115771446
知識梳理不易,請尊重勞動成果,文章僅釋出在CSDN網站上,在其他網站看到該博文均屬於未經作者授權的惡意爬取資訊
在電腦安裝軟體的時候經常會遇到有些問題導致沒有辦法安裝,最簡單粗暴的方式就是把這個軟體所有的相關的檔案全部刪除,那麼問題就來了,要刪除的檔案怎麼找呢?因此也就有了這個需求(實際上今天寫這篇文章就是簡單的因為學妹把軟體刪了,但是找不到之前軟體裡面處理的檔案,嗚嗚嗚~~~)
直接給出程式碼,需要用到之前梳理的辦公自動化相關的知識,感興趣的可以瞭解一下:自動化辦公專題,程式碼如下:
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、企業人員資訊、測試\測試人員。
圖示資料如下
呼叫函數,執行程式碼最後資料的結果為:(在使用這個函數的時候,只需要指定一下路徑和要查詢的內容就行了)
上述的函數,如果直接在編輯器中開啟,然後輸入路徑和查詢內容,程式也就自動執行了,但是需要有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建立點簡單的小程式還行,一旦執行操作過於耗時,程式也就自動崩潰了
又回到了我最喜歡的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() #程式執行
這裡使用pyinstaller模組,關於這個模組的使用可以參照:將python程式碼打包成系統可執行檔案(Pyinstaller模組)
在py檔案所在目錄開啟命令列,然後執行如下指令
pyinstaller -F 檔案查詢小軟體.py -n 檔案查詢小軟體
期間可能會有360跳出來阻止你生成小軟體,這時候果斷把360給退出
最後軟體就打包好了,生成的軟體就在dist資料夾中,這裡沒有指定圖片,有興趣的話也可以指定一下圖片,連結中有如何指定軟體的圖片
最後就是測試一下軟體的使用了,使用結果如下,很完美的解決問題
撒花✿✿ヽ(°▽°)ノ✿