前記
python刪除指定文件夾下的文件,是一個常用的功能。我找了不少地方,一直沒有找到合適的模版,那只好自己倒騰一個比較實用的模版了。
基本模塊
這里面會用到幾個模塊,一個是🏪目錄下所有文件的的函數:listdir 常用的使用方法:
import os
filenames = os.listdir('.')
print(filenames)
另外一個就是查看該目錄下是否有特定的文件,這個就是name.swith()函數,具體的使用方法如下:
state = any(name.endswith('.py') for name in filenames)
print(state)
一個是查找該目錄下的子目錄。如下所示:該目錄子目錄static下的所有文件如下所示:
tmp_path = os.path.join(BASE_PATH,'static/')
還有一種方法用於查找該目錄下的特定文件。一般使用glob模塊。glob模塊是最簡單的模塊之一,內容非常少。用它可以查找符合特定規則的文件路徑名。具體的使用方法如下所示:
fileNames = glob.glob(path + r'/*')
實例解析
這里面例子如下所示:具體的解析和運行結果非常簡單,需要你自己操作了;
import os
import sys
import glob
def del_files(path):
fileNames = glob.glob(path + r'/*')
for fileName in fileNames:
try:
os.remove(fileName)
print("remove file:%s" % fileNames)
except:
except:
try:
os.mkdir(fileName)
print("mkdir file:%s " % fileName)
except:
print("del file:%s " % fileName)
del_files(fileName)
os.rmdir(fileName)
def del_file(path):
lsdir = os.listdir(path)
print(lsdir)
if any(name.endswith('.py') for name in lsdir):
print("no txt in this dir")
else:
print("have txt and need to remove")
for file in lsdir:
try:
c_path = os.path.join(path,file)
os.remove(c_path)
print("rm c path: %s " % c_path)
except:
del_file(path)
os.rmdir(file)
print("rm failed try again: %s " % c_path)
if __name__ == '__main__':
BASE_PATH = os.getcwd()
print("below is base path:\n %s" % BASE_PATH)
tmp_path = os.path.join(BASE_PATH,'static/')
print("below is tmp_path:\n %s" % tmp_path)
#del_files(tmp_path)
del_file(tmp_path)
我把這些代碼上傳到了github上,有需要的同學也可以上上面拷貝:
https://github.com/DyLanCao/ipython/tree/master/base/file_handle/dir_del