2009-06-13 7 views
6

So come eliminare singoli file, tuttavia mi sono perso nella mia implementazione di come eliminare tutti i file in una directory di un tipo.Eliminazione di file in base al tipo in Python su Windows

Di 'la directory è \ myfolder

Voglio eliminare tutti i file che sono i file .config, ma niente agli altri. Come farei questo?

Grazie Gentilmente

+0

Volevi dire che vuoi cancellare tutti i * file * che sono .config? – Triptych

+0

Sì! Risolto Mi spiace che lo –

+0

desideri eliminare tutti i file .config sotto un determinato percorso? se si desidera semplicemente eliminare un file .config, è sufficiente eseguire os.remove (". config") –

risposta

4

vorrei fare qualcosa di simile al seguente:

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

elenca i file in una directory e se non è una directory e il nome del file è ".config" in qualsiasi parte esso, Cancellalo. Dovrai o essere nella stessa directory di myfolder, o dargli il percorso completo per la directory. Se è necessario eseguire questa operazione in modo ricorsivo, utilizzerò l'os.walk function.

+0

In realtà intendevo i file, non cartelle. Scusa Dan –

+0

Non è colpa tua - ma questa risposta è ora irrilevante a causa dell'OP che modifica la domanda. – Triptych

+0

Ancora un buon esempio di iterazione! –

15

utilizzare il modulo glob:

import os 
from glob import glob 

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

+1: Sì, glob è l'approccio giusto qui (se non vuoi camminare con le sottodirectory, ovviamente, sarebbe necessario os.walk). –

1

Qui 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) 

Si noti inoltre che gen_files possono essere facilmente riscritto ad accettare una tupla di modelli, dal momento che str.endswith accetta una tupla

Problemi correlati