Sto scherzando con le ricerche di file in python su un grande disco rigido. Ho cercato su os.walk e glob. Di solito uso os.walk perché lo trovo molto più ordinato e sembra essere più veloce (per le solite directory di dimensioni).Più veloce a os.walk o glob?
Qualcuno ha avuto esperienza con entrambi e potrebbe dire che è più efficiente? Come ho detto, glob sembra essere più lento, ma è possibile utilizzare i caratteri jolly ecc., Come con walk, è necessario filtrare i risultati. Ecco un esempio di ricerca di core dump.
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)
Suona come l'ottimizzazione prematura per me. Ho dato un'occhiata al codice sorgente (http://hg.python.org/cpython/file/d01208ba482f/Lib/glob.py e http://hg.python.org/cpython/file/d01208ba482f/Lib/os.py) e vedi che entrambe le funzioni si basano su 'os.listdir' e' os.isdir', quindi il mio istinto mi dice che non guadagnerai molto in un modo o nell'altro. (Tuttavia, come sottolineato in due delle risposte qui sotto, 'os.walk' ricorre su sottodirectory e' glob.iglob' no, quindi non ha senso confrontare). Se si finisce con un problema di prestazioni, profilo un paio di approcci. Altrimenti, scrivi semplicemente il codice. –