香港人換電腦、換手機、買外置硬碟嘅速度愈來愈快,但每次搬資料,都好容易留下一大堆重複檔案:同一張相喺「相片」、「下載」、「備份」幾個資料夾各有一份;同一份合約 email 收過、WhatsApp 收過、又自己另存過一次。日子一久,硬碟就畀呢啲「同一樣嘢嘅翻版」塞到滿一滿,想清又唔知從何入手。
今次教你用 Python 寫一個「重複檔案搜尋器」:行一次,就自動掃描成個資料夾(連埋子資料夾),搵出內容完全一樣嘅檔案,列成報告,等你決定邊啲可以刪。全程唔使裝額外軟件,用 Python 內置嘅功能就做得到。
點解唔可以靠「檔名」判斷重複?
最直覺嘅做法係比較檔名,但呢個方法好唔可靠:同一張相可以叫 IMG_2031.jpg 又叫 holiday.jpg;反過嚟,兩份完全唔同嘅文件都可能叫「報價單.docx」。所以要準確判斷,一定要比較檔案內容。做法係用 hashlib 計算每個檔案嘅「指紋」(SHA-256 雜湊值)——內容一樣,指紋就一模一樣;只要相差一個位元,指紋就完全唔同。
第一步:動手之前想一想
- 先由一個範圍開始(例如「文件」資料夾),唔好一次過掃成部機
- 程式只負責「搵」同「報告」,唔會自動刪除,安全第一
- 細檔案數目多,所以先用「檔案大細」篩一次、再用雜湊值確認,速度快好遠
第二步:完整程式碼
開一個新檔案 dedupe.py(記事本都得),貼入以下 code:
逐行解釋
- file_hash() —— 用 SHA-256 計出檔案指紋;逐塊(64KB)讀入,就算幾 GB 嘅大檔都唔會爆記憶體。
- os.walk(SCAN_DIR) —— 自動走遍指定資料夾同所有子資料夾。
- by_size —— 先按檔案大細分組;大細唔同就一定唔係重複,可以直接跳過,慳好多時間。
- len(paths) < 2 → continue —— 大細獨一無二嘅檔案,唔使浪費時間算雜湊。
- by_hash —— 用指紋做 key,同一組就係內容完全相同嘅檔案。
- h[:8] —— 報告只顯示指紋頭 8 個字,方便肉眼對比。
- to_excel() —— 一行一個檔案,另存成 Excel,方便你篩選、排序。
第三步:執行
跑完,同一個資料夾會多一個 duplicates.xlsx,入面列晒所有重複檔案,仲會話你知總共可以釋放幾多空間。你可以喺 Excel 排吓序,睇清楚邊個係原檔、邊個係副本,再自己決定刪邊個。
安全使用五大貼士
- 先備份,後清理 —— 刪嘢之前,最好先將檔案清單抄低,或者做一次備份。
- 保留最有價值嘅一份 —— 通常保留喺最就手、命名最清楚嗰個位置。
- 唔好喺系統槽亂刪 —— Windows 同程式本身嘅檔案,唔好用呢個方法處理。
- 留意「文件大細」一欄 —— 程式已經先篩過一次,但報告入面嘅大細欄可以幫你快速鎖定最佔位嘅大檔。
- 定期行,唔好等爆 —— 每季掃一次,比一次過清幾百 GB 輕鬆得多。
總結
Python 教學:用幾十行 code,就砌出一個「重複檔案搜尋器」,幾秒掃完成個資料夾,幫你慳返幾 GB 甚至幾十 GB 空間。重點記住兩個次序:先用大細篩、再用雜湊值確認;同埋程式只搵唔刪,清理嘅決定權永遠喺你手上。想再進一步,你可以喺 code 尾加一段,將重複檔案自動搬去「待刪」資料夾,睇清楚冇問題先一次過清。