Estoy jugando con las búsquedas de archivos en python en un disco duro grande. He estado mirando os.walk y glob. Usualmente uso os.walk ya que me parece mucho más ordenado y parece ser más rápido (para los directorios de tamaño habitual).Más rápido que os.walk o glob?
¿Alguien ha tenido alguna experiencia con ambos y podría decir cuál es más eficiente? Como digo, glob parece ser más lento, pero puedes usar comodines, etc., como en el caso de caminar, tienes que filtrar los resultados. Aquí hay un ejemplo de búsqueda de volcados de memoria.
core = re.compile(r"core\.\d*")
for root, dirs, files in os.walk("/path/to/dir/")
for file in files:
if core.search(file):
path = os.path.join(root,file)
print "Deleting: " + path
os.remove(path)
O
for file in iglob("/path/to/dir/core.*")
print "Deleting: " + file
os.remove(file)
Suena como la optimización prematura a mí. Eché un vistazo a la fuente (http://hg.python.org/cpython/file/d01208ba482f/Lib/glob.py y http://hg.python.org/cpython/file/d01208ba482f/Lib/os.py) y ver que ambas funciones se basan en 'os.listdir' y' os.isdir', por lo que mi instinto me dice que no ganarás mucho en un sentido u otro. (Sin embargo, como se señala en dos de las respuestas a continuación, el 'os.walk' recurre sobre los subdirectorios y' glob.iglob' no, por lo que no tiene sentido comparar). Si terminas con un problema de rendimiento, perfila un par de enfoques. De lo contrario, solo escriba un código claro. –