Hi,
ich suche nach einer einfachen Möglichkeit Verzeichnisse zu löschen in denen unter Umständen auch etwas drin steht (evtl sogar weitere Verzeichnisse mit weiterem Inhalt). Als Lösung ist mir bis jetzt nur eingefallen in jedem Verzeichniss alle Dateien aufzulisten, diese zu löschen, dann das Verzeichnis zu löschen....usw.
Diese Lösung erscheint mir aber viel zu umständlich
Jemand ne Idee/Vorschlag/Tip??
Danke schonmal im Vorraus
Gruß
Stifferle
Volle Verzeichnisse löschen
Hi,
vielleicht ist noch zu erwähnen das ich den Befehl rmdir() und auch den Befehl removedirs() probiert habe, aber beide schmeißen eine Exception wenn der Ornder nicht leer ist.
also im Prinzip brauch ich nur etwas wieremovedirs() das die Dateien trotzdem löscht...gibt es sowas???
Gruß
Stifferle
vielleicht ist noch zu erwähnen das ich den Befehl rmdir() und auch den Befehl removedirs() probiert habe, aber beide schmeißen eine Exception wenn der Ornder nicht leer ist.
also im Prinzip brauch ich nur etwas wieremovedirs() das die Dateien trotzdem löscht...gibt es sowas???
Gruß
Stifferle
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Aus einer alten pywin und Python 2.2 Dokumentation , etwas angepasst, so dass es auch ohne pywin32 geht:
Code: Alles auswählen
import os
def del_dir(path):
for file in os.listdir(path):
file_or_dir = os.path.join(path,file)
if os.path.isdir(file_or_dir):
del_dir(file_or_dir)
else:
os.remove(file_or_dir)
os.rmdir(path)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Hi,
Unter Windows geht folgende Möglichkeit:
Dabei wird der Windows-CMD-Befehl abgegeben und ausgeführt.
Edit (Leonidas): Code in Python-Tags gesetzt.
Unter Windows geht folgende Möglichkeit:
Code: Alles auswählen
root = "C:\Programme\New"
os.popen('rd /s /q "%s"' % root)
Edit (Leonidas): Code in Python-Tags gesetzt.
Gruß, Harry
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Warum sowas machen wenn man auch Pythons eigene Funktionen nutzen kann, die zudem noch unter anderen OSen laufen? (Ja, unter Linux und Co hätte man rm -r nehmen können, aber warum?)HarryH hat geschrieben:Unter Windows geht folgende Möglichkeit:
[snip]
Dabei wird der Windows-CMD-Befehl abgegeben und ausgeführt.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
-
- Python-Forum Veteran
- Beiträge: 1209
- Registriert: Montag 29. September 2003, 17:18
- Wohnort: Purkersdorf (bei Wien [Austria])
Hi Leonidas!
So funktionierts (und seit wann nennen wir eine Variable file?
Gruß, mawe
Code: Alles auswählen
import os
def del_dir(path):
for fil in os.listdir(path):
file_or_dir = os.path.join(path,fil)
if os.path.isdir(file_or_dir):
del_dir(file_or_dir)
else:
os.remove(file_or_dir)
os.rmdir(path)
Gruß, mawe
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Seitdem wir (resp. ich) zu blöd sind (bin), uns (mir) den Quellcode des Beispiels genauer anzusehen... aje, sorry, normalerweise achte ich drauf.mawe hat geschrieben:(und seit wann nennen wir eine Variable file?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Hallo,
vielen, vielen Dank für eure Hilfe. Obwohl ich sagen muss das HarryH's Lösung einen gewissen Reiz auf mich ausübt (ich sag nur 'Quick n Dirty' ), hab ich doch die Lösung von Leonidas übernommen.
Funktioniert tadellos, natürlich erst mit der Korrektur von mawe!
Also nochmal vielen Dank und viel Spaß noch
Grüße
Stifferle
vielen, vielen Dank für eure Hilfe. Obwohl ich sagen muss das HarryH's Lösung einen gewissen Reiz auf mich ausübt (ich sag nur 'Quick n Dirty' ), hab ich doch die Lösung von Leonidas übernommen.
Funktioniert tadellos, natürlich erst mit der Korrektur von mawe!
Also nochmal vielen Dank und viel Spaß noch
Grüße
Stifferle
``shutil.rmtree(path)`` ist viel kürzer und funtkioniert unter allen Plattformen.
-
- Python-Forum Veteran
- Beiträge: 1209
- Registriert: Montag 29. September 2003, 17:18
- Wohnort: Purkersdorf (bei Wien [Austria])
Hi Blackjack!
Stimmt, aber das Modul muss man auch erst mal kennen Mir ist das noch nie aufgefallen, hat aber auch keinen sehr einleuchtenden Namen
NACHTRAG: Also irgendwie hätte man die paar Funktiönchen von shutil auch noch in os packen können.
Gruß, mawe
Stimmt, aber das Modul muss man auch erst mal kennen Mir ist das noch nie aufgefallen, hat aber auch keinen sehr einleuchtenden Namen
NACHTRAG: Also irgendwie hätte man die paar Funktiönchen von shutil auch noch in os packen können.
Gruß, mawe
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Oder lieber andersrum, die Dateisachen aus os in shutil.mawe hat geschrieben:NACHTRAG: Also irgendwie hätte man die paar Funktiönchen von shutil auch noch in os packen können.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Hallo Leute,
kann es sein, dass folgender Funktion lediglich alle Dateien in der ersten ebene löscht?
Ich habe einen Verzeichnis, und in ihr sind weitere Verzeichnisse und Daten enthalten. Wie kann ich alle Unterverzeichnisse und Dateien löschen bzw. wie müsste ich den Code von Leonidas erweitern?
PS: Bin Windowsnutzer
kann es sein, dass folgender Funktion lediglich alle Dateien in der ersten ebene löscht?
Code: Alles auswählen
import os
def del_dir(path):
for fil in os.listdir(path):
file_or_dir = os.path.join(path,fil)
if os.path.isdir(file_or_dir):
del_dir(file_or_dir)
else:
os.remove(file_or_dir)
os.rmdir(path)
PS: Bin Windowsnutzer
Danke für die schnelle Antwort, jedoch möchte ich es nicht mit
lösen, da ich selber python 2.5 benutze. Gibts da keine Allgemeine Lösung, wo man es auch in Python 2.5 macht?
Code: Alles auswählen
shutil.rmtree(path)
Man macht es in Python 2.5 genau so, weil die Funktion nicht entfernt wurde.
http://docs.python.org/library/shutil.h ... til.rmtree (ja, das ist 2.6 Doku)
http://docs.python.org/library/shutil.h ... til.rmtree (ja, das ist 2.6 Doku)