Estoy buscando una manera de hacer un os.walk()
paseo no recursivo, al igual que os.listdir()
funciona. Pero necesito regresar de la misma manera que regresa el os.walk()
. ¿Alguna idea?Os.walk no recursivo()
Gracias de antemano.
Estoy buscando una manera de hacer un os.walk()
paseo no recursivo, al igual que os.listdir()
funciona. Pero necesito regresar de la misma manera que regresa el os.walk()
. ¿Alguna idea?Os.walk no recursivo()
Gracias de antemano.
next(os.walk(...))
Mi solución un poco más definido en los parámetros sería la siguiente:
for root, dirs, files in os.walk(path):
if not recursive:
while len(dirs) > 0:
dirs.pop()
//some fency code here using generated list
Editar: correcciones, si/mientras cuestión. Gracias, @Dirk van Oosterbosch:}
Esto solo funciona si hay ** un ** subdirectorio. Para subdirectorios múltiples use 'while len (dirs)> 0' en lugar de' if'. –
@DirkvanOosterbosch: o incluso más simple: simplemente 'si no es recursivo: break' No relacionado: puede usar' del dirs [:] 'en lugar de' while dirs: dirs.pop() '. – jfs
Usar 'dirs.clear()' es más idiomático. – ideasman42
bien lo que significaba Kamiccolo era más de acuerdo con esto:
for str_dirname, lst_subdirs, lst_files in os.walk(str_path):
if not bol_recursive:
while len(lst_subdirs) > 0:
lst_subdirs.pop()
Añadir un break
después de los nombres de archivo de bucle:
for root, dirs, filenames in os.walk(workdir):
for fileName in filenames:
print (fileName)
break #prevent decending into subfolders
Esto funciona porque (por defecto) os.walk
primero enumera los archivos en la carpeta solicitada y luego va a las subcarpetas.
Más simple de lo que podía pensar ... ¡Gracias! –