2017-06-10 51 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) 
相关问题