Sto provando a fare qualcosa su tutti i file sotto un determinato percorso. Non voglio per raccogliere tutti i nomi dei file in anticipo poi fare qualcosa con loro, così ho provato questo:Resa in una funzione ricorsiva
import os
import stat
def explore(p):
s = ''
list = os.listdir(p)
for a in list:
path = p + '/' + a
stat_info = os.lstat(path)
if stat.S_ISDIR(stat_info.st_mode):
explore(path)
else:
yield path
if __name__ == "__main__":
for x in explore('.'):
print '-->', x
Ma questo codice salta sopra le directory quando li colpisce, invece di cedere il loro contenuto. Che cosa sto facendo di sbagliato?
Alcune lingue possono produrre un'intera sequenza, non solo singoli elementi. Non penso che Python sia uno di questi. http://www.mindscapehq.com/blog/index.php/2011/02/28/recursive-iterators-in-f/ – Leonid
Poiché il titolo suggerisce un problema più generale di quello che può essere risolto da os.walk, considera questo : def esplorare (p): se isinstance (p, (la lista, tuple)): for x in p: esplorare (p) altro: resa p Questo ha lo stesso problema. Perché non funziona? – JimB