python指令碼自動刪除空資料夾和非指定型別檔案(附贈批量重新命名)
阿新 • • 發佈:2018-12-10
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)