版权声明:转载请标注来源 https://blog.csdn.net/hehedadaq/article/details/82745391
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)