批量备份和删除本地文件

上周电脑备份下载了百度云盘10w+的手机图片缓存,5年来的图片,包括以前各种的课程和照片。

手动删除又慢,而且容易删错。

编写个小脚本,一次批量删除。

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
# author:Torry Zhang
# contact: zytwell321@163.com
# datetime:2020/10/2 8:25
# software: PyCharm
"""
电脑上下载了百度云盘的缓存图片太多了,有10w+,写个脚本删除
"""
import os
import shutil
import threading


def delete_file():
    """
    按照筛选规则直接删除文件。不做备份
    :return:
    """
    for file_name in os.listdir(path):
        # 遍历path路径下面的文件file_name
        if file_name.endswith(docu_type):
            if keyword in file_name:
                will_del_file = file_name
                os.remove(os.path.join(path, will_del_file))
                print("==============删除文件:", will_del_file)


def bef_delete_save_files():
    """
    使用os.walk(path)查找文件批量删除
    :return: 备份+删除历史文件
    """
    # 创建文件备份目录path\save
    save_path = "{}\save".format(path)
    if not os.path.isdir(save_path):
        os.makedirs(save_path)

    count = -1

    # 遍历文件
    try:
        for foldName, subFolders, fileNames in os.walk(path):
            for filename in fileNames:
                if filename.endswith(docu_type) and (keyword in filename):
                    del_name = filename
                    count = count + 1

                    # 1.复制文件到新目录,再删除
                    # shutil.copyfile(os.path.join(path, del_name),
                    #                 os.path.join(save_path, del_name))  # copyfile()需file->file
                    # shutil.copy2(os.path.join(path,del_name), os.path.join(save_path))
                    # 删除原目录文件
                    # os.remove(os.path.join(path, del_name))
                    
                    # 2.或者直接移动文件                    
                    shutil.move(os.path.join(path,del_name), os.path.join(save_path))  
                else:
                    continue

    except Exception as e:
        print("程序已处理完毕!")

    finally:
        print("已处理文件 %d个。" % count)


if __name__ == "__main__":
    path = r"G:\BaiduNetdiskDownload" # r原始符的作用,等价于""里面的\\
    # path = r"C:\Users\Torry Zhang\Desktop\1\新建文件夹"
    keyword = "202008"
    docu_type = ".jpg"
    # delete_file()            # 直接删除文件
    # bef_delete_save_files()    # 移动文件(备份+删除)

    t1 = threading.Thread(target=bef_delete_save_files)
    t1.start()

执行完毕:

程序已处理完毕!
已处理文件 7139个。

数据量太大的化,建议考虑多进程处理。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值