2017-06-10 52 views
3

研究員,我沒有太多的Python文件I/O工作,現在我想請你的幫助。如何在Python中刪除具有特定名稱的文件夾?

我想刪除所有具有特定名稱的文件夾,例如「1」,「2」,「3」,...... 我創造了他們與代碼:

zoom_min = 1 
path_to_folders = 'D:/ms_project/' 
def folders_creator(zoom): 
    for name in range (zoom_min, zoom + 1): 
     path_to_folders = '{0}'.format(name) 
     if not os.path.exists(path_to_folders): 
      os.makedirs(path_to_folders) 

我希望我的Python代碼有我不知道怎麼寫了條件,即檢查如果這些文件夾('1','2','3',...)已經存在:

如果是,我想刪除它們的所有內容,然後執行上面的代碼。如果不是,那麼只需執行代碼即可。

謝謝

P.S.基於編程語法,「目錄」和「文件夾」之間是否存在差異?

+2

_「我不知道該怎麼寫的條件,檢查這些文件夾('1','2','3',...)是否已經存在」_但是...你已經做了用'os.path.exists(path_to_folders)'......問題到底是什麼? –

回答

0

後練一段時間,我結束了,這是我心中的代碼:

def create_folders(zoom): 
    zoom_min = 1 
    path_to_folders = 'D:/ms_project/' 
    if os.path.isdir(path_to_folders): 
     if not os.listdir(path_to_folders) == []: 
      for subfolder in os.listdir(path_to_folders): 
       subfolder_path = os.path.join(path_to_folders, subfolder) 
       try: 
        if os.path.isdir(subfolder_path): 
         shutil.rmtree(subfolder_path) 
        elif os.path.isfile(subfolder_path): 
         os.unlink(subfolder_path) 
       except Exception as e: 
        print(e) 
     elif os.listdir(path_to_folders) == []: 
      print("A folder existed before and was empty.") 
    elif not os.path.isdir(path_to_folders): 
     os.mkdir("ms_project") 
    os.chdir(path_to_folders) 
    for name in range(zoom_min, zoom + 1): 
     path_to_folders = '{0}'.format(name) 
     if not os.path.exists(path_to_folders): 
      os.makedirs(path_to_folders) 

謝謝大家誰啓發了我,尤其是誰回答我對我最初的問題。

2

希望這段代碼能幫助你弄清楚這一點。

您可以使用os.walk功能來獲取所有目錄的列表,以檢查 子文件夾(1或2或3)是否存在。然後你可以使用os.system,它基本上允許你啓動cmd命令並使用刪除命令。這是一個粗略的解決方案,但希望這有助於。

import os 

# purt r"directorypath" within os.walk parameter. 

genobj = os.walk(r"C:\Users\Sam\Desktop\lel") #gives you a generator function with all directorys 
dirlist = genobj.next()[1] #firt index has list of all subdirectorys 
print dirlist 

if "1" in dirlist: #checking if a folder called 1 exsists 
    print "True" 


#os.system(r"rmdir /S /Q your_directory_here ") 
1

首先directoryfolder是同義詞,所以你要尋找的檢查是你已經使用的相同,我。即os.path.exists

刪除目錄(及其所有內容)的最簡單方法可能是使用由標準模塊shutil提供的功能rmtree

下面是你的代碼與我的建議,包括在內。

import shutil 
zoom_min = 1 
path_to_folders = 'D:/ms_project/' 

def folders_creator(zoom): 
    for name in range (zoom_min, zoom + 1): 
     path_to_folders = '{0}'.format(name) 
     if os.path.exists(path_to_folders): 
      shutil.rmtree(path_to_folders) 
     os.makedirs(path_to_folders) 
相關問題