Ordnerhierarchie und Dateien ändern
Verfasst: Dienstag 15. Januar 2019, 07:18
Hallo Python Forum!
Derzeit beschäftigt mich ein Problem das die Verzeichnishierarchie betrifft.
Da ich mir sicher bin, das viele Nutzer mit os.path und/oder pathlib vor einer steilen Lernkurve stehen, denke ich das dieser Post angemessen ist.
Es liegt folgende Verzeichnisstruktur vor:
Dabei sind Ordnername1-X und der betreffende Unterordner immer gleich benannt. Die darunter liegenden Ordner und Dateien nicht.
Ziel ist es jetzt, die "untersten" Verzeichnisse und Dateien eine Hierarchieebene nach oben zu verschieben, und den "doppelten" Ordner zu löschen.
Hier mein bisheriger Ansatz:
Ich hatte dies schon einmal in einem Skript mit os.walk() gelöst, aber es gelingt mir einfach nicht mehr :/
Danke für Anregungen!
MfG,
XX
Derzeit beschäftigt mich ein Problem das die Verzeichnishierarchie betrifft.
Da ich mir sicher bin, das viele Nutzer mit os.path und/oder pathlib vor einer steilen Lernkurve stehen, denke ich das dieser Post angemessen ist.
Es liegt folgende Verzeichnisstruktur vor:
Code: Alles auswählen
/root
|
------ Ordnername1
| |---------Ordnername1
| |---------------- Ordner mit Namen
| |---------------- evtl. Datei mit Namen
|
------ Ordnername2
| |---------Ordnername2
| |---------------- Ordner mit Namen
| |---------------- evtl. Datei mit Namen
|
------ OrdnernameX
|---------OrdnernameX
|---------------- Ordner mit Namen
|---------------- evtl. Datei mit Namen
Ziel ist es jetzt, die "untersten" Verzeichnisse und Dateien eine Hierarchieebene nach oben zu verschieben, und den "doppelten" Ordner zu löschen.
Hier mein bisheriger Ansatz:
Code: Alles auswählen
import pathlib
root = pathlib.Path.cwd() # starts in current working directory
root
children1 = [x for x in root.iterdir() if x.is_dir()] #generates a list of subdirectories
children1
for c in children1:
child2 = [x for x in c.iterdir() if x.is_dir()] #and another list of subdirectories
child2
if child2:
child3 = [x for x in child2[0].iterdir()] # now a list of directory objects
child3
if child3:
for c in child3:
print c.name
#child2[0].replace(child2[0].parent) # Replace parent with child (axe the last folder) -> PermissionError
Danke für Anregungen!
MfG,
XX