python刪除指定目錄下的指定檔案和資料夾

2021-09-12 04:26:25 字數 3082 閱讀 7512

具體**:

#coding:utf-8

import os,sys,platform

class removetagfile(object):

path=none

def removefile(self,path,remove_list,retain_list): #path後面要跟/

self.path=path

system_test=platform.system()

if(system_test=='windows'):

path_last=self.path[-1]

if(path_last!='\\' ):

self.path=self.path+'\\'

elif(system_test=='linux'):

path_last = self.path[-1]

if (path_last != '/'):

self.path = self.path + '/'

if(len(remove_list)==0 and len(retain_list)==0): #如果remove_list,retain_list都是空則刪除path目錄下所有檔案及資料夾

self.remove_file(self.eachfile(self.path))

elif(len(remove_list)>0 and len(retain_list)==0):

self.remove_file(remove_list)

elif(len(remove_list)==0 and len(retain_list)>0):

list=self.eachfile(self.path)

for f in retain_list:

if(f in list):

list.remove(f)

else:

print('there is no file in the directory!')

self.remove_file(list)

elif (len(remove_list) > 0 and len(retain_list) > 0):

for f in retain_list:

if(f in remove_list):

remove_list.remove(f)

self.remove_file(remove_list)

def remove_file(self,file_list):

for filename in file_list:

if(os.path.exists(self.path+filename)): #判斷檔案是否存在

if(os.path.isdir(self.path+filename)):

self.del_file(self.path+filename)

else:

if(os.path.exists(self.path+filename)):

os.remove(self.path+filename)

else:

print(self.path+filename+' is not exist!')

for filename in file_list:

if(os.path.exists(self.path+filename)):

self.del_dir(self.path+filename)

def del_file(self,path): #遞迴刪除目錄及其子目錄下的檔案

for i in os.listdir(path):

path_file = os.path.join(path, i) #取檔案絕對路徑

if os.path.isfile(path_file): #判斷是否是檔案

os.remove(path_file)

else:

self.del_file(path_file)

def del_dir(self,path): #刪除資料夾

for j in os.listdir(path):

path_file = os.path.join(path, j) # 取檔案絕對路徑

if not os.listdir(path_file): #判斷檔案如果為空

os.removedirs(path_file) #則刪除該空資料夾,如果不為空刪除會報異常

else:

self.del_dir(path_file)

def eachfile(self,filepath): #獲取目錄下所有檔案的名稱

pathdir = os.listdir(filepath)

list=

for alldir in pathdir:

child = os.path.join('%s%s' % (filepath, alldir))

filename=child.replace(filepath,'')

return list

if __name__ == '__main__':

rtf=removetagfile()

#以下表示只刪除d:\test\目錄下的a資料夾、a.txt檔案、b.txt檔案

"""規則:

1、如果remove_list、retain_list都為空則刪除path目錄下所有檔案及資料夾

2、如果remove_list為空、retain_list不為空,則刪除不在retain_list中的所有檔案及資料夾

3、如果remove_list不為空、retain_list為空,則刪除在remove_list中的所有檔案及資料夾

4、如果remove_list、retain_list都不為空,則刪除不在retain_list中且在remove_list中的所有檔案及資料夾

"""path = 'd:\test'

remove_list = ['a', 'a.txt', 'b.txt'] # 要刪除的檔名稱

retain_list = ['c.txt'] # 要保留的檔名稱

rtf.removefile(path,remove_list,retain_list)

刪除指定目錄下指定字尾的檔案

定時清除計畫任務日誌檔案,避免占用太大磁碟空間 folderpath www server log 要操作的目錄 deltype array log foreach deltype as file type param path資料夾絕對路徑 file type待刪除檔案的字尾名 return vo...

刪除指定目錄下的所有svn目錄

windows registry editor version 5.00 hkey local machine software classes folder shell deletesvn delete svn folders hkey local machine software classes...

Linux下面刪除指定目錄下非指定檔案的所有檔案

指令格式 rm rfls grep v 指令含義 刪除當前目錄下非 的所有檔案,其中雙引號裡面的是檔名 注意 其中rm rf 後面的 是鍵盤上tab鍵上面那個鍵,並不是我們平時用的單引號,我開始用錯了可是糾結了半天 指令格式 cd abc rm rfls grep v 指令含義 刪除下級目錄abc下...