Python eliminando ciertas extensiones de archivo

Soy bastante nuevo en Python, pero he conseguido que este código funcione y, de hecho, hago lo que se pretende que haga.

Sin embargo, me pregunto si hay una forma más eficiente de codificar esto, tal vez para mejorar la velocidad de procesamiento.

import os, glob def scandirs(path): for currentFile in glob.glob( os.path.join(path, '*') ): if os.path.isdir(currentFile): print 'got a directory: ' + currentFile scandirs(currentFile) print "processing file: " + currentFile png = "png"; jpg = "jpg"; if currentFile.endswith(png) or currentFile.endswith(jpg): os.remove(currentFile) scandirs('C:\Program Files (x86)\music\Songs') 

En este momento, hay alrededor de 8000 archivos, y lleva bastante tiempo procesar cada archivo y verificar si realmente termina en png o jpg.

Ya que estás recurriendo a través de subdirectorios, usa os.walk :

 import os def scandirs(path): for root, dirs, files in os.walk(path): for currentFile in files: print "processing file: " + currentFile exts = ('.png', '.jpg') if currentFile.lower().endswith(exts): os.remove(os.path.join(root, currentFile)) 

Si el progtwig funciona y la velocidad es aceptable, no lo cambiaría.

De lo contrario, podrías intentar la respuesta de unutbu.

En general, dejaría el

 png = "png" jpg = "jpg" 

cosas que no veo ningún propósito en no usar las cadenas directamente.

Y mejor prueba para “.png” en lugar de “png”.

Una solución aún mejor sería definir

 extensions = ('.png', '.jpg') 

En algún lugar central y usar eso en

 if any(currentFile.endswith(ext) for ext in extensions): os.remove(currentFile) 

.