2010-01-06 17 views
5

Ho alcuni file che desidero eliminare, hanno lo stesso nome all'inizio ma hanno numeri di versione diversi. Qualcuno sa come cancellare i file usando l'inizio del loro nome?Eliminazione di file che iniziano con un nome Python

Eg. 
version_1.1 
version_1.2 

C'è un modo di eliminare qualsiasi file che inizia con la versione del nome?

Grazie

+0

Quindi si desidera eliminare i file corrispondenti a 'versione_1. *'? –

risposta

13
import os, glob 
for filename in glob.glob("mypath/version*"): 
    os.remove(filename) 

sostituto il percorso corretto (o . (= directory corrente)) per mypath. E assicurati di non ottenere il percorso sbagliato :)

Questo solleverà un'eccezione se un file è attualmente in uso.

+2

L'eccezione viene sollevata solo su Windows. L'eliminazione dei file funziona in modo un po 'diverso su Unices. – gnud

3

In quale lingua?

In bash (Linux/Unix) è possibile utilizzare:

rm version* 

o in batch (Windows/DOS) è possibile utilizzare:

del version* 

Se si vuole scrivere qualcosa per fare questo in Python sarebbe abbastanza facile - basta guardare la documentazione per le espressioni regolari.

edit: appena per riferimento, questo è come farlo in Perl:

opendir (folder, "./") || die ("Cannot open directory!"); 
@files = readdir (folder); 
closedir (folder); 

unlink foreach (grep /^version/, @files); 
4

Se si desidera utilizzare Python, è sufficiente utilizzare una combinazione di os.listdir(), che restituisce un elenco di tutti i file in una determinata directory e os.remove().

cioè .:

my_dir = # enter the dir name 
for fname in os.listdir(my_dir): 
    if fname.startswith("version"): 
     os.remove(os.path.join(my_dir, fname)) 

Tuttavia, come altre risposte hanno sottolineato, davvero non c'è bisogno di usare Python per questo, la shell supporta in modo nativo probabilmente una tale operazione.

+0

Va bene quando non ci sono troppi file! –

1
import os 
os.chdir("/home/path") 
for file in os.listdir("."): 
    if os.path.isfile(file) and file.startswith("version"): 
     try: 
       os.remove(file) 
     except Exception,e: 
       print e 
Problemi correlati