Python實現清理重復文件功能的示例代碼
在電腦上或多或少的存在一些重復文件,體積小的倒沒什麼,如果體積大的就很占內存瞭,而如果自己一個一個查看文件是否重復,然後再刪除,還是很要命的。
為此,我用python制作瞭一個刪除重復文件的小工具,核心代碼很簡單,就十行代碼,不管什麼類型的文件都可以一鍵刪除!
前置
PySimpleGUI庫用來創建可視化界面,os操作文件,隻需要這兩個庫:
import os import PySimpleGUI as sg
os為內置庫,PySimpleGUI使用pip命令安裝即可:
pip install 庫名
查找、刪除重復文件
查找重復文件分為兩步:
第一步是獲得需要查找的文件路徑;
第二步是各個文件進行對比出重復文件。
這裡用os.walk()遍歷文件夾下的所有文件,該函數可以得到一個三元元組(root,dirs,files),參數含義如下:
- root:所指的是當前正在遍歷的這個文件夾的本身的地址;
- dirs:是一個 list ,內容是該文件夾中所有的目錄的名字(不包括子目錄);
- files:同樣是 list , 內容是該文件夾中所有的文件(不包括子目錄)。
file_path即walk()函數中的參數top,是你所要遍歷的目錄的路徑,C、D盤或者指定文件夾均可:
for root, dirs, files in os.walk(file_path): for file in files: # 組合得到文件夾所有文件的路徑 path = os.path.join(root, file)
得到所有的文件路徑後,對其進行讀取,不同的文件格式讀取出來的內容都是不同的,然後通過字典映射的方式存儲讀取的內容和路徑,接著隻需要進行判斷是否有重復的內容,有的話根據路徑用os.remove()進行刪除:
dict = {} f = open(path, 'rb').read() if f in dict: # 刪除 os.remove(path) print('刪除重復文件:', path) else: dict[f] = path
以上就是核心代碼,一共十行。
GUI制作
為瞭以後方便使用,不用一次次跑程序,而在原有的程序基礎上進行GUI制作,最後打包成.exe可執行文件。
GUI界面設計
界面我隻做瞭個簡單的基礎版本,相關內容可以看千圖成像,有興趣的還可以加入“選擇需要刪除文件格式”的選項,進行選擇性刪除。
# 主題設置 sg.theme('LightBrown3') # 佈局設置 layout = [ [sg.Frame(layout=[ [sg.InputText(key='file_path', size=(41, 1), font=("微軟雅黑", 10), enable_events=True), sg.FolderBrowse('選擇文件夾', font=("微軟雅黑", 12)), ], ], title='文件夾選擇', title_color='blue', font=("微軟雅黑", 10), relief=sg.RELIEF_SUNKEN, )], [sg.Frame(layout=[ [sg.Output(size=(51, 10), font=("微軟雅黑", 10))], ], title='信息展示', title_color='blue', font=("微軟雅黑", 10), relief=sg.RELIEF_SUNKEN, )], [sg.Button('開始刪除', font=("微軟雅黑", 12)), sg.Text('', font=("微軟雅黑", 12), size=(27, 0)), sg.Button('退出程序', font=("微軟雅黑", 12), button_color='red')] ] # 創建窗口 window = sg.Window('刪除重復文件', layout, font=("微軟雅黑", 12), default_element_size=(80, 1)) filepath = [] # 事件循環 while True: # 退出按鈕 event, values = window.read() if event in (None, '退出程序'): break window.close()
界面效果如下:
GUI界面效果
邏輯設計
獲取文件夾路徑,把得到的路徑存入列表中:
if event == 'file_path': files = values['file_path'] if os.path.exists(files): filepath.append(files) else: print('文件夾不存在,請重新選擇!') sg.popup('文件夾不存在,請重新選擇!')
啟動按鈕,點擊時把路徑列表傳入main函數中:
if event == '開始刪除': if len(filepath) != 0: main(filepath) else: sg.popup('文件夾未選擇!')
GUI打包
打包可以直接使用pyinstaller進行安裝;如果你不知道怎麼打包,或者不熟悉命令行操作,可以使用前面文章:打包工具,這款打包工具可以簡單的滿足打包需求。
使用pyinstaller庫打包,啟動命令行窗口,在命令行窗口cd到文件所在的文件目錄中,最後用下面命令進行打包:
pyinstaller -F -w 名稱.py
打包過程沒出現什麼狀況,會得到幾個文件,進入dist文件夾,就可以看見.exe文件瞭。
效果展示
示例結果
至此,我們就成功利用Python實現瞭清理重復文件工具。
到此這篇關於Python實現清理重復文件功能的示例代碼的文章就介紹到這瞭,更多相關Python清理重復文件內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- 基於Python實現千圖成像工具的示例代碼
- 利用Python實現批量打包程序的工具
- 隻用40行Python代碼就能寫出pdf轉word小工具
- 如何利用python寫GUI及生成.exe可執行文件
- 一個非常簡單好用的Python圖形界面庫(PysimpleGUI)