En esta entrada veremos cómo listar el contenido de una carpeta utilizando Python. Vamos a utilizar las funciones listdir() y scandir() del módulo os.
Para poder usar estás funciones es necesario importar el módulo, al ser parte de la biblioteca estándar no se requiere instalar algo adicional. La línea de codigo que debemos incluir es:
import os
Vamos a empezar con la función listdir(). Esta función recibe la ruta en la que queramos trabajar y regresa una lista con el nombre de los archivos o carpetas que contiene.
import os
os.listdir()
En caso de que no coloquemos una ruta, veremos el contenido de la carpeta en la que nos encontramos trabajando. Podemos recorrer la lista de nombres con un ciclo.
import os
for elem in os.listdir():
print (elem)
>>> import os
>>> for elem in os.listdir():
… print(elem)
…
Archivo Nivel 1.txt
Carpeta Nivel 1 – A
Carpeta Nivel 1 – B
Carpeta Nivel 1 – C
La función scandir() también nos mostrará el contenido de la ruta especificada sin embargo nos regresará un iterador del que obtendremos más detalles. Al mostrar la salida de cada caso, notamos la la información proporcionada es distinta.
import os
for elem in os.scandir():
print(elem)
>>> import os
>>> for elem in os.scandir():
… print(elem)
…
<DirEntry ‘Archivo Nivel 1.txt’>
<DirEntry ‘Archivo Nivel 1 – A’>
<DirEntry ‘Archivo Nivel 1 – B’>
<DirEntry ‘Archivo Nivel 1 – C’>
De cada elemento podemos acceder a su atributo name o utilizar los métodos is_dir() o is_file() para distinguir archivos o carpetas.
import os
for elem in os.scandir():
if elem.is_dir():
print(elem.name, "es carpeta")
>>> import os
>>> for elem in os.scandir():
… if elem.is_dir():
… print(elem.name, «es carpeta»)
…
Carpeta Nivel 1 – A es carpeta
Carpeta Nivel 1 – B es carpeta
Carpeta Nivel 1 – C es carpeta
>>> for elem in os.scandir():
… if elem.is_file():
… print(elem.name, «es archivo»)
…
Carpeta Nivel 1.txt es archivo
Dependiendo de la funcionalidad que quieras usar o la información que quieras obtener puedes usar listdir() o scandir(). En cualquier caso ambas funciones son muy útiles para listar el contenido de una carpeta en Python.
Si quieres conocer otras funciones del módulo os te recomiendo darte una vuelta por la entrada 11 funciones del módulo os que debes conocer.
¿Conoces algún otro método? Déjame en los comentarios que te ha parecido la entrada.