Listar un directorio en Python con walk() de forma recursiva.

En este articulo mostraré como listar un directorio en python con walk. En este link podrás ver también, como acceder a directorios con scandir

El método walk() pertenece al módulo os , y recibe como parámetro la ruta del contenido que recorreremos.

Como lo que hace el método es crear un iterador, que en cada iteración, devuelve tres valores: el nombre de la ruta completa del directorio, la lista de directorios que lo componen y la lista de ficheros de ese directorio.

El recorrido que hace el metodo por defecto es descendente, por lo que primero listará el contenido del directorio actual, y luego  ira descendiendo por nivel listando los directorios correspondientes.

 Cuando no se especifica la ruta,  walk() toma como referencia el directorio actual.

import os
dir = "/Users/blackmaster/Downloads/"

for nombre_directorio,carpetas,archivos in os.walk(dir):
    print('\n A')
    print(nombre_directorio)
    print('\n B')
    print(carpetas)
    print('\n C')
    print(archivos)

El resultado del script anterior irá devolviendo recursivamente, o sea por niveles los componentes de una ruta en este caso, separados por un salto de línea con los subtitulos A, B y C.

Te invito a que lo pruebes, para que lo comprendas mejor.

Si al método walk() le pasamos el argumento topdown=False:, mostrará  primero el contenido de los directorios más profundos.

Como por defecto, walk() no sigue los enlaces simbólicos que encuentra en un directorio, hay que pasar el argumento followlinks=True, para que lo haga.

import os
dir = "/Users/blackmaster/Downloads/"

for nombre_directorio,carpetas,archivos in os.walk(dir, topdown=False,followlinks=True):
    print('\n A')
    print(nombre_directorio)
    print('\n B')
    print(carpetas)
    print('\n C')
    print(archivos)

Y hasta aquí.

Espero modestamente, que este post ayude a alguien.

La clave para todo es la determinación

D.