Saltar al contenido

python

Listar un directorio de forma recursiva en Python

Este tutorial muestra como recorrer un directorio de forma recursiva para listar todo su contenido

Listar directorio de manera recursiva en Python

Este tutorial te mostrará una forma muy sencilla de listar un directorio de forma recursiva en Python, de manera que puedas acceder al árbol completo de carpetas y ficheros.

Tomaremos como referencia la siguiente estructura de directorios:

+ ejemplo
|_ + dir_a
     |_ fichero2.txt
     |_ fichero3.txt
|_ + dir_b
     |_ fichero4.txt
|_ documento.txt
|_ fichero1.txt
|_ imagen.jpg

Listar un directorio de manera recursiva con walk

Python pone a nuestra disposición la función walk() del módulo os para recorrer un árbol de directorios de forma recursiva. Esta función permite recorrer una estructura de directorios siguiendo una estrategia de arriba a abajo o de abajo a arriba. Por defecto es de arriba a abajo. Esto quiere decir que en primer lugar se lista el contenido del directorio actual, a continuación el de los directorios que se encuentran en el primer nivel, seguidamente los del segundo y, así, sucesivamente.

walk() recibe como argumento la ruta a partir de la cuál se accede al contenido. Si no se especifica, se toma como referencia el directorio actual. La función devuelve un iterador que, en cada iteración, devuelve tres valores: el nombre de la ruta completa del directorio actual, la lista de directorios del directorio actual y la lista de ficheros del directorio actual.

Veamos cómo usar walk() para listar el árbol de directorios del ejemplo de forma recursiva y mostrar el nombre de los ficheros de cada una de las carpetas:

import os

ejemplo_dir = '/Users/Juanjo/ejemplo/'

for nombre_directorio, dirs, ficheros in os.walk(ejemplo_dir):
    print(nombre_directorio)
    for nombre_fichero in ficheros:
        print(nombre_fichero)

El resultado del script anterior es el siguiente:

/Users/Juanjo/ejemplo/
documento.txt
imagen.jpg
fichero1.txt
/Users/Juanjo/ejemplo/dir_b
fichero4.txt
/Users/Juanjo/ejemplo/dir_a
fichero2.txt
fichero3.txt

Como puedes apreciar, se lista el directorio de forma recursiva comenzando en primer lugar por el directorio ejemplo y, a continuación, los directorios dir_b y dir_a.

Modificar el comportamiento por defecto de walk

Podemos utilizar una estrategia de abajo a arriba pasando el argumento topdown=False:

import os

ejemplo_dir = '/Users/Juanjo/ejemplo/'

for nombre_directorio, dirs, ficheros in os.walk(ejemplo_dir, topdown=False):
    print(nombre_directorio)
    for nombre_fichero in ficheros:
        print(nombre_fichero)

En esta ocasión, la salida del script es:

/Users/Juanjo/ejemplo/dir_b
fichero4.txt
/Users/Juanjo/ejemplo/dir_a
fichero2.txt
fichero3.txt
/Users/Juanjo/ejemplo/
documento.txt
imagen.jpg
fichero1.txt

Si te fijas, esta vez se muestra primero el contenido de los directorios más profundos del árbol.

Por defecto, walk() no sigue los enlaces simbólicos que encuentre en un directorio. Para ello, hay que llamar a la función pasando el argumento followlinks=True.

Conclusiones

Ya has visto que es muy fácil listar un directorio de forma recursiva en Python con walk().

Si lo que buscas es, simplemente, cómo recorrer el contenido de un directorio, puedes consultar este otro artículo.

Newsletter EstrategIA

Programar con IA sin perder el control

Si te ha interesado este artículo, esto también te va a interesar. Cada dos martes te cuento qué funciona y qué no al construir software con agentes de IA, con ejemplos reales de mi software factory y los números de mis proyectos, sin maquillar.

9.277 desarrolladores y profesionales ya la leen martes quincenales

EstrategIA Próximo número · martes

Lo que recibes

  1. Qué funciona (y qué no) programando con agentes de IA
  2. Casos reales de MaIA y DGC: decisiones, errores y resultados
  3. Los números de mis proyectos, sin maquillar
  4. Una idea que puedes aplicar esa misma semana

Sin spam. Te das de baja con un clic.

j2logo

Sigue leyendo

Listar directorio en Python
python

Listar directorio en Python. Listar ficheros de un directorio

requests - Hacer peticiones http en Python
python

Python requests. La librería para hacer peticiones http en Python

Web scraping con Python. Guía de inicio a BeautifulSoup
python

Web scraping con Python. Extraer datos de una web. Guía de inicio de Beautiful Soup

Tutorial de SQLAlchemy
python

SQLAlchemy. Tutorial de Python SQLAlchemy. Guía de inicio