Sto cercando un modo per fare una passeggiata os.walk()
non ricorsiva, proprio come funziona os.listdir()
. Ma ho bisogno di restituire allo stesso modo il os.walk()
restituisce. Qualche idea?Os.walk non ricorsivo()
Grazie in anticipo.
Sto cercando un modo per fare una passeggiata os.walk()
non ricorsiva, proprio come funziona os.listdir()
. Ma ho bisogno di restituire allo stesso modo il os.walk()
restituisce. Qualche idea?Os.walk non ricorsivo()
Grazie in anticipo.
next(os.walk(...))
La mia soluzione un po 'più parametrizzato sarebbe questo:
for root, dirs, files in os.walk(path):
if not recursive:
while len(dirs) > 0:
dirs.pop()
//some fency code here using generated list
Modifica: correzioni, se/mentre problema. Grazie, @Dirk van Oosterbosch:}
Funziona solo se è presente una ** sottodirectory **. Per più sottodirectory usa 'while len (dirs)> 0' invece di' if'. –
@DirkvanOosterbosch: o anche più semplice: solo 'se non ricorsivo: break' Non correlato: potresti usare' del dirs [:] 'invece di' while dirs: dirs.pop() '. – jfs
Usa 'dirs.clear()' è più idiomatico. – ideasman42
Beh che Kamiccolo dire era più in linea con questo:
for str_dirname, lst_subdirs, lst_files in os.walk(str_path):
if not bol_recursive:
while len(lst_subdirs) > 0:
lst_subdirs.pop()
Aggiungi un break
dopo i nomi dei file per ciclo:
for root, dirs, filenames in os.walk(workdir):
for fileName in filenames:
print (fileName)
break #prevent decending into subfolders
Questo funziona perché (per impostazione predefinita) os.walk
prima elenca i file nella cartella richiesta e quindi entrano nelle sottocartelle.
Più semplice di quanto potessi pensare ... Grazie! –