使用Python实现Windows系统垃圾清理

在日常使用Windows系统时,我们经常会遇到:

系统盘空间莫名减少 电脑运行速度越来越慢 浏览器缓存堆积影响上网体验 系统更新残留文件占用大量空间
Windows自带的磁盘清理工具功能有限,无法深度清理各类垃圾文件。市面上第三方清理工具又往往捆绑广告,甚至存在隐私风险。

工具设计理念

纯净无捆绑 - 不收集任何用户数据
深度清理 - 覆盖12类系统垃圾
智能安全 - 危险操作多重确认
开源透明 - 代码完全可审计

以下是用Python实现Windows系统垃圾清理的解决方案,包含代码实现和关键注意事项:

核心实现思路

  1. 定位常见垃圾文件

    • 临时文件(.tmp
    • 系统日志(.log
    • 回收站文件
    • 浏览器缓存
    • 下载目录旧文件
  2. 安全删除机制

    • 文件年龄筛选(保留新文件)
    • 重要文件白名单
    • 删除前确认机制

代码实现

import os
import shutil
import time
from send2trash import send2trash  # 需安装:pip install Send2Trash

# 垃圾文件特征配置
CLEAN_CONFIG = {
    "extensions": [".tmp", ".log", ".cache", ".bak"],
    "dirs": [
        os.environ.get("TEMP", ""),
        os.path.expanduser("~\\Downloads"),
        os.path.expanduser("~\\AppData\\Local\\Temp")
    ],
    "max_age": 30  # 保留30天内的新文件
}

def safe_clean():
    total_size = 0
    deleted_files = 0

    for target_dir in CLEAN_CONFIG["dirs"]:
        if not os.path.exists(target_dir):
            continue

        for root, _, files in os.walk(target_dir):
            for file in files:
                file_path = os.path.join(root, file)
                
                # 过滤条件
                if not (file_ext_matched(file) and 
                        file_old_enough(file_path) and
                        not is_system_file(file_path)):
                    continue

                try:
                    file_size = os.path.getsize(file_path)
                    send2trash(file_path)  # 安全删除到回收站
                    total_size += file_size
                    deleted_files += 1
                except Exception as e:
                    print(f"无法清理 {file_path}: {str(e)}")

    print(f"清理完成!释放空间:{total_size/1024/1024:.2f}MB")
    print(f"已删除文件数:{deleted_files}")

def file_ext_matched(filename):
    return any(filename.lower().endswith(ext) 
               for ext in CLEAN_CONFIG["extensions"])

def file_old_enough(filepath):
    file_age = (time.time() - os.path.getmtime(filepath)) / 86400
    return file_age > CLEAN_CONFIG["max_age"]

def is_system_file(path):
    # 过滤系统关键文件
    system_keywords = ["windows", "system32", "$"]
    return any(kw in path.lower() for kw in system_keywords)

if __name__ == "__main__":
    safe_clean()

关键技术点

  1. 安全删除机制

    • 使用send2trash库代替永久删除
    • 文件年龄筛选公式:
      文件年龄 = 当前时间 − 修改时间 86400 \text{文件年龄} = \frac{\text{当前时间} - \text{修改时间}}{86400} 文件年龄=86400当前时间修改时间
    • 系统文件过滤算法:
      ∃ k w ∈ 系统关键词集合 , k w ⊆ 文件路径 \exists kw \in \text{系统关键词集合}, kw \subseteq \text{文件路径} kw系统关键词集合,kw文件路径
  2. 路径处理

    • 使用环境变量获取系统路径
    • 递归遍历目录树结构:
      遍历深度 = log ⁡ 2 ( 目录分支数 ) \text{遍历深度} = \log_2(\text{目录分支数}) 遍历深度=log2(目录分支数)

使用建议

  1. 首次运行前建议修改配置:
    CLEAN_CONFIG["max_age"] = 7  # 改为清理7天前的文件
    
  2. 可通过添加更多路径增强清理效果:
    "dirs.append(os.path.expanduser('~\\AppData\\Local\\Google\\Chrome\\User Data\\Default\\Cache'))"
    

注意事项

  1. 需要管理员权限才能清理某些系统目录
  2. 建议定期清理间隔不小于7天
  3. 重要文件建议提前备份

提示:首次运行前请执行 pip install send2trash 安装依赖库。该脚本会将文件移至回收站而非永久删除,如需彻底清理可在确认后手动清空回收站。

你可能感兴趣的:(Python,python,windows,开发语言)