python脚本自动删除空文件夹和非指定类型文件(附赠批量重命名)

本文介绍了一个Python脚本,用于批量删除指定目录下的空文件夹及非指定类型的文件,并提供了文件重命名的功能。脚本首先定义了需保留的图片格式,然后通过递归方式遍历指定目录,删除不符合条件的文件和空文件夹。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

python脚本自动删除空文件夹和非指定类型文件

直接上代码吧:

# -*- coding: utf-8 -*-
"""
Created on Sun Sep 16 22:51:27 2018
@author: lele
"""
import os  # 引入文件操作库
#指定保留的文件类型是图片,然后先建立一个后缀的集合
image1 = {'jpg','jpeg','bmp','png','tif','JPG','JPEG','BMP','PNG','TIF'}

#定义一个删除空文件和非指定类型文件的函数
def delete_null_dir(parent):
#如果是文件夹的话,那么进入下面的循环
    if os.path.isdir(parent):
        # print("进入删除模式:"),这里你不清楚,直接可以print变量,看看到底是啥
        # 如p是打开parent这个目录里面的文件和文件夹。
        for p in os.listdir(parent):
            try:
            # 判断后缀是否在集合里,如果没有后缀,那么就是文件夹了
                if(p.split('.')[-1] not in image1):
                #不在的话,就直接删了
                    os.remove(os.path.join(parent,p))
                    print("p:",p)
                    print("删除成功!")
            except :
                print("not file~")
            # 这是一个递归还是嵌套?反正就是可以一次性扫光你根目录下,所有的文件和文件夹。
            # d是将路径和新的文件夹名联合起来,如果新的路径d是文件夹,再次调用这个函数
            d  = os.path.join(parent,p)
            if (os.path.isdir(d) == True):
                delete_null_dir(d)
     # os.listdir(parent)拿到文件夹里的所有东西,如果为空,就是空文件夹
     # 所以这个判断,就是删除所有为空的文件夹。
    if not os.listdir(parent):
        print(parent)
        os.rmdir(parent)
        print("删除成功!")

    # 附赠一个重命名的函数
def rename(parent):
    if os.path.isdir(parent):
        document = []
        for p in os.listdir(parent):
            try:
                document.append(p)
            except :
                print("not document~")
            d  = os.path.join(parent,p)
            # print(d)
            if (os.path.isdir(d) == True):
                rename(d)
        print("----")

        print(document)

        if(len(document)>0):
            old_path_name = parent.split("\\")[-1]
            print("old_path_name:",old_path_name)
            change = input("是否需要修改(y/n)?")
            if(change=='y'):
                new_name_mode = input("请输入新的名字模板:")
                print("new_name_mode:",new_name_mode)

                i = 1
                for doc in document:
                    print("doc:",doc)
                    print('后缀:')
                    print(doc.split('.')[-1])
                    new_name = new_name_mode+'_'+str(i)+'.'+doc.split('.')[-1]
                    os.rename(os.path.join(parent,doc),os.path.join(parent,new_name))
                    print("改名成功")
                    i += 1

if __name__ == "__main__":  # 执行本文件则执行下述代码
    path = r'E:/【分子模块设计育种创新体系】文件归档整理汇总'
    # delete_null_dir(path)
    rename(path)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hehedadaq

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值