2009-06-13 14 views
6

Ich weiß, wie Sie einzelne Dateien löschen, aber ich bin in meiner Implementierung verloren, wie alle Dateien in einem Verzeichnis eines Typs zu löschen.Löschen von Dateien nach Typ in Python unter Windows

Sagen Sie das Verzeichnis \ myfolder

ich alle Dateien löschen möchten, die Dateien werden .config, aber nichts zu den anderen. Wie würde ich das tun?

Dank freundlicher

+0

Meinten Sie, Sie möchten alle * Dateien * löschen, die .config sind? – Triptych

+0

Ja! Fixed Entschuldigung, dass –

+0

möchten Sie alle .config-Dateien unter einem bestimmten Pfad löschen? Wenn Sie nur eine .config-Datei löschen möchten, dann können Sie einfach os.remove (". config") –

Antwort

4

würde ich so etwas wie das folgende tun:

import os 
files = os.listdir("myfolder") 
for f in files: 
    if not os.path.isdir(f) and ".config" in f: 
    os.remove(f) 

Es listet die Dateien in einem Verzeichnis und wenn es kein Verzeichnis ist und der Dateiname „.config“ überall drin hat, Lösche es. Sie müssen entweder im selben Verzeichnis wie mein Ordner sein oder den vollständigen Pfad zum Verzeichnis angeben. Wenn Sie dies rekursiv tun müssen, würde ich den os.walk verwenden.

+0

Ich meinte eigentlich Dateien, nicht Ordner. Sorry Dan –

+0

Nicht deine Schuld - aber diese Antwort ist jetzt irrelevant, weil OP die Frage bearbeitet hat. – Triptych

+0

Immer noch ein gutes Beispiel für die Iteration! –

15

Verwenden Sie das glob Modul:

import os 
from glob import glob 

for f in glob ('myfolder/*.config'): 
    os.unlink (f) 
+1

+1: Ja, glob ist der richtige Ansatz hier (wenn Sie nicht wollen, Unterverzeichnissen zu gehen, natürlich - das würde os.walk benötigen). –

1

Hier ya go:

import os 

# Return all files in dir, and all its subdirectories, ending in pattern 
def gen_files(dir, pattern): 
    for dirname, subdirs, files in os.walk(dir): 
     for f in files: 
     if f.endswith(pattern): 
      yield os.path.join(dirname, f) 


# Remove all files in the current dir matching *.config 
for f in gen_files('.', '.config'): 
    os.remove(f) 

Beachten Sie auch, dass gen_files kann leicht ein Tupel von Mustern zu akzeptieren, neu geschrieben werden, da str.endswith nimmt ein Tupel

Verwandte Themen