微信存储占空间太大怎么办?用Python批量净化!

原理:

遍历当前文件夹下所有文件(递归),更改权限为可写,然后计算md5值,存入临时列表,如果发现有重复md5,则删除。代码如下:

import os, stat
import hashlib


def calculate_md5(file_path):
    """计算文件的MD5值"""
    md5 = hashlib.md5()
    with open(file_path, "rb") as file:
        while chunk := file.read(8192):
            md5.update(chunk)
    return md5.hexdigest()


def is_readable(file_path):
    """检查文件是否可读"""
    try:
        with open(file_path, "rb"):
            pass
        return True
    except IOError:
        return False


def find_duplicate_files(folder_path):
    """遍历文件夹,找到重复的文件并删除"""
    md5_dict = {}

    for root, dirs, files in os.walk(folder_path):
        for file in files:
            file_path = os.path.join(root, file)
            os.chmod(file_path, stat.S_IWRITE)
            if not is_readable(file_path):
                # 文件不可读,跳过处理
                print(f"无法访问文件: {file_path}")
                continue

            try:
                file_md5 = calculate_md5(file_path)
            except PermissionError:
                # 捕获拒绝访问异常,跳过当前文件
                print(f"无法访问文件: {file_path}")
                continue

            if file_md5 in md5_dict:
                # 如果已经存在相同的MD5值,则删除当前文件
                print(f"删除重复文件: {file_path}")
                try:
                    os.remove(file_path)
                except PermissionError:
                    # 捕获拒绝访问异常,跳过当前文件
                    print(f"无法访问文件: {file_path}")
                    continue
            else:
                md5_dict[file_md5] = file_path


if __name__ == "__main__":
    folder_path = "."  # 设置要遍历的文件夹路径
    find_duplicate_files(folder_path)

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值