当前位置:首页>python>电脑里重复文件一堆,写个Python脚本清理,瞬间腾出几十G空间

电脑里重复文件一堆,写个Python脚本清理,瞬间腾出几十G空间

  • 2026-10-11 07:11:50
电脑里重复文件一堆,写个Python脚本清理,瞬间腾出几十G空间

电脑用久了,最烦人的就是重复文件。照片、文档、下载的压缩包,到处都有副本。我有个朋友前段时间想备份手机照片,发现电脑里光是“IMG_2023”开头的照片就存了四五个版本。他一个个手动删除,搞了一下午还漏了不少。

其实这事有简单的解决办法。写个Python脚本,几分钟就能搞定几十GB的重复文件。下面这个方法我用过很多次,操作简单不伤电脑。

先装个工具。你的电脑得有Python环境。没有的话去官网下载安装,操作不复杂。装完后打开命令行或者IDLE,开始写代码。核心思路是一步步计算每个文件的哈希值,把相同哈希值的文件挑出来删掉。哈希值就像文件的身份证,内容一样,哈希值就一样。

下面这个脚本很干净。它不会乱删系统文件,只针对你指定的文件夹。复制下面代码,保存成clean_duplicates.py:

import os 

import hashlib

def get_file_hash(filepath):

   hasher = hashlib.md5()

   with open(filepath, 'rb') as f:

       buf = f.read(65536)

       while len(buf) > 0:

           hasher.update(buf)

           buf = f.read(65536)

   return hasher.hexdigest()

def find_duplicates(folder_path):

   hash_map = {}

   duplicates = []

   for dirpath, dirnames, filenames in os.walk(folder_path):

       for filename in filenames:

           filepath = os.path.join(dirpath, filename)

           file_hash = get_file_hash(filepath)

           if file_hash in hash_map:

               duplicates.append(filepath)

           else:

               hash_map[file_hash] = filepath

   return duplicates

def delete_duplicates(file_list):

   deleted_size = 0

   for filepath in file_list:

       try:

           file_size = os.path.getsize(filepath)

           os.remove(filepath)

           deleted_size += file_size

           print(f'删除: {filepath}')

       except Exception as e:

           print(f'删除失败: {filepath}, 错误: {e}')

   return deleted_size

if __name__ == '__main__':

   target_folder = input('请输入要清理的文件夹路径: ')

   if os.path.exists(target_folder):

       print('正在扫描重复文件...')

       dup_files = find_duplicates(target_folder)

       if dup_files:

           print(f'发现 {len(dup_files)} 个重复文件')

           confirm = input('是否删除这些文件? (y/n): ')

           if confirm.lower() == 'y':

               size_freed = delete_duplicates(dup_files)

               print(f'清理完成。释放空间: {size_freed/1024/1024:.2f} MB')

           else:

               print('取消操作')

       else:

           print('没有发现重复文件')

   else:

       print('路径不存在')

跑这个脚本前要想清楚。把那些不需要的重复副本删掉,但保留原件。建议先挑一个不太重要的文件夹试试,比如Downloads或者Desktop。确认脚本工作正常,再清理大文件夹。

我第一次用这个脚本清理自己的电脑,发现光是微信文件夹里就存了一百多个重复的工作文档。那些文档每次修改后都另存为副本,时间一长根本分不清哪个是最新版。脚本跑完,微信文件夹从12GB缩到了4GB。看着清清爽爽的文件夹,心里特舒服。

还有个细节要注意。脚本默认保留第一个碰到的文件,删除后面出现的副本。如果你在某个文件夹里存了同名但不同版本的文件,哈希值会不一样,不会误删。只有完全一样的内容才会被当作重复文件。

如果你对Python不熟悉,别怕。复制上面的代码,把倒数第七行的文件夹路径改成你自己的。比如改成target_folder = 'D:\\我的文档'。注意路径里的反斜杠要写成双反斜杠。改好后直接运行。

有些朋友担心误删系统文件。这个担心多余。脚本只扫描你指定的文件夹,不会碰Windows的系统目录。你要是实在不放心,可以先把脚本指向一个临时文件夹,比如C盘新建一个叫test的文件夹,放几个测试文件进去试试。

清理完重复文件,电脑运行速度会有改善。特别是那些常年不清理的电脑,机械硬盘用户感受最明显。固态硬盘用户也能省出宝贵的存储空间。我的一个学生用这个方法清出35GB空间,他说感觉电脑整个变年轻了。

最后说一句。定期清理重复文件是好习惯。不用每天都跑脚本,每个月或每季度来一次就行。存着这个Python文件,下次想清理的时候直接双击运行。你学会了吗?动手试试吧。

最新文章

随机文章