1. 程式人生 > >python指令碼自動刪除空資料夾和非指定型別檔案(附贈批量重新命名)

python指令碼自動刪除空資料夾和非指定型別檔案(附贈批量重新命名)

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)