2010-01-06 24 views
5

Tengo algunos archivos que deseo eliminar, tienen el mismo nombre al inicio pero tienen números de versión diferentes. ¿Alguien sabe cómo eliminar archivos usando el comienzo de su nombre?Eliminando archivos que comienzan con un nombre Python

Eg. 
version_1.1 
version_1.2 

¿Hay alguna forma de eliminar cualquier archivo que comience con la versión del nombre?

Gracias

+0

¿Desea eliminar los archivos que coincidan con 'version_1. *'? –

Respuesta

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

Sustituir el camino correcto (o . (= directorio actual)) para mypath. Y asegúrese de no obtener el camino equivocado :)

Esto generará una excepción si un archivo está actualmente en uso.

+2

La excepción solo se plantea en Windows. Eliminar archivos funciona un poco diferente en Unices. – gnud

3

¿En qué idioma?

En bash (Linux/Unix) que podría utilizar:

rm version* 

o por lotes (Windows/DOS) podría usar:

del version* 

Si quieres escribir algo para hacer esto en Python sería bastante fácil, solo mira la documentación de expresiones regulares.

edición: apenas para la referencia, esto es cómo hacerlo en Perl:

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

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

Si realmente desea usar Python, puede simplemente usar una combinación de os.listdir(), que devuelve una lista de todos los archivos en un directorio determinado, y os.remove().

es decir .:

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

Sin embargo, como otras respuestas señalaron, que realmente no tienen que usar Python para esto, la cáscara probablemente soporta de forma nativa tal operación.

+0

¡Es bueno cuando no hay demasiados archivos! –

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 
Cuestiones relacionadas