利用python删除重复文件和归类文件

标题利用python实现两个功能:

1 删除重复文件:通过filecmp比较文件内容是否相同进行操作
2 归类文件:通过文件后缀名进行归类
import os
import glob
import shutil
import filecmp
from tqdm import tqdm


def fun1(path):
    """剔除重复文件"""
    # 存放所有文件的绝对路径
    file_lst = []
    # glob 遍历出传入文件夹下的所有文件 是文件就存于file_lst当中
    for i in glob.glob(path + '/**/*', recursive=True):
        if os.path.isfile(i):
            file_lst.append(i)
    # 进行文件比较 如果内容相同 就剔除
    for x in file_lst:
        for y in file_lst:
            if x != y and os.path.exists(x) and os.path.exists(y):
                if filecmp.cmp(x, y):
                    os.remove(y)
                    print("del {}".format(y))


def fun2(path):
    """归类文件"""
    savepath = {
        "else": r"C:\Users\yejx\Desktop\wechatfiles\else",
        "excel": r"C:\Users\yejx\Desktop\wechatfiles\excel",
        "pdf": r"C:\Users\yejx\Desktop\wechatfiles\pdf",
        "word": r"C:\Users\yejx\Desktop\wechatfiles\word",
        "zip": r"C:\Users\yejx\Desktop\wechatfiles\zip",
        "images": r"C:\Users\yejx\Desktop\wechatfiles\images",
        "ppt": r"C:\Users\yejx\Desktop\wechatfiles\ppt",
    }
    # 存放所有文件的绝对路径
    file_lst = []
    # glob 遍历出传入文件夹下的所有文件 是文件就存于file_lst当中
    for i in glob.glob(path + '/**/*', recursive=True):
        if os.path.isfile(i):
            file_lst.append(i)
    for i in tqdm(file_lst):
        # 获取文件后缀名
        suffix = i.split("\\")[-1].split('.')[-1]
        if suffix == 'pdf':
            shutil.move(i, savepath["pdf"])
        elif suffix == 'zip' or suffix == 'rar' or suffix == '7z':
            shutil.move(i, savepath["zip"])
        elif suffix == 'xlsx' or suffix == 'xls' or suffix == 'csv':
            shutil.move(i, savepath["excel"])
        elif suffix == 'gif' or suffix == 'jpg' or suffix == 'png' or suffix == "webp":
            shutil.move(i, savepath["images"])
        elif suffix == 'docx' or suffix == 'doc':
            shutil.move(i, savepath["word"])
        elif suffix == 'pptx' or suffix == 'ppt':
            shutil.move(i, savepath["ppt"])
        else:
            shutil.move(i, savepath["else"])


if __name__ == '__main__':
    # 要遍历的文件根目录
    path = ""
    fun1(path)
    fun2(path)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值