2017-06-10 19 views
3

Fellows, Ich habe nicht zu viel mit Python-Dateien I/O arbeiten und jetzt möchte ich bitte Ihre Hilfe fragen.Wie lösche ich Ordner mit bestimmten Namen in Python?

Ich möchte alle Ordner löschen, die bestimmte Namen haben, z. ‚1‘, ‚2‘, ‚3‘, ... Ich habe sie mit einem Code:

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) 

ich meinen Python-Code will einen Zustand haben, die ich nicht weiß, wie man schreibt, dass die Kontrollen Wenn diese Ordner ('1', '2', '3', ...) bereits vorhanden sind:

Wenn ja, möchte ich sie mit ihrem gesamten Inhalt löschen und dann den obigen Code ausführen. Wenn nicht, dann führe einfach den Code aus.

Danke

P. S. Gibt es einen Unterschied zwischen "Verzeichnis" und "Ordner" basierend auf der Programmier-Syntax?

+2

_ "eine Bedingung, die ich nicht schreiben kann, die überprüft, ob diese Ordner ('1', '2', '3', ...) bereits existieren" _ Aber ... du hast das schon getan mit 'os.path.exists (path_to_folders)' ... Was genau ist das Problem? –

Antwort

0

Nach einiger Zeit des Übens, landete ich mit einem Code auf, der in meinem Kopf war:

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) 

Vielen Dank an alle, die mich inspiriert, vor allem, die mich auf meine erste Frage geantwortet.

2

Hoffe, dieser Code hilft Ihnen, dies herauszufinden.

Mit der Funktion os.walk können Sie eine Liste aller Verzeichnisse abrufen, um zu überprüfen, ob der Unterordner (1 oder 2 oder 3) vorhanden ist. Dann können Sie os.system verwenden, mit dem Sie im Wesentlichen Cmd-Befehle starten können und der Löschbefehl verwendet wird. Dies ist eine grobe Lösung, aber hoffe, das hilft.

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

allererst directory und folder Synonyme sind, so dass der Scheck Sie suchen ist die gleiche Sie bereits verwendet, i. e. os.path.exists.

Die einfachste Möglichkeit, ein Verzeichnis (und seinen gesamten Inhalt) zu entfernen, ist die Verwendung der vom Standardmodul shutil bereitgestellten Funktion rmtree.

Unten ist Ihr Code mit meinen Vorschlägen enthalten.

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) 
Verwandte Themen