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!

推薦閱讀: