2017-11-03 3 views
0

Dies ist die Ordner-Struktur:leere Ordner entfernen (Python)

FOLDER\\ 
     \\1\\file 
     \\2\\file 
     \\3\\ 
     \\4\\file 

Das Skript sollte in Ordnern für jeden Ordner scannen (Schleife) und prüfen, ob die Unterordner leer ist oder nicht. Wenn dies der Fall ist, müssen sie gelöscht werden.

Mein Code, bis jetzt ist dies:

folders = ([x[0] for x in os.walk(os.path.expanduser('~\\Desktop\\FOLDER\\DIGITS\\'))]) 
folders2= (folders[1:]) 

Dieser Scan für Ordner und unter Verwendung von folders2 vom Tannen-Ordner in DIGITS beginnen. In DIGITS gibt es nummerierte Verzeichnisse: 1,2,3,4, usw.

Nun was? Versucht mit os.rmdir, aber es gibt mir einen Fehler, etwas über Zeichenfolge. In der Tat ist folders2 eine Liste kein String, nur sagen ..

Antwort

1

nicht sicher, welche Art von Fehler erhalten Sie, das funktioniert perfekt für mich:

import os 

root = 'FOLDER' 
folders = list(os.walk(root))[1:] 

for folder in folders: 
    # folder example: ('FOLDER/3', [], ['file']) 
    if not folder[2]: 
     os.rmdir(folder[0]) 
+0

ich in einem for-Schleife bedeuten. Vielleicht lag ich falsch ... Wie auch immer, die Antwort macht den Job perfekt. – BlueTrack

+0

yep, wird diese Lösung in einigen Fällen nicht funktionieren wie: 1) Rekursion (wenn es Ordner tiefer als 1 Ebene gibt) 2) wenn Ordner interne Ordner hat aber keine Dateien darin –

+2

Was ist das, was ich für diese spezieller Fall. Vielen Dank. – BlueTrack