Para obtener una lista de nombres de archivos y directorios (nombres de carpetas) en Python, utilice la función del módulo os.listdir().
os.listdir(path='.')
Devuelve una lista que contiene los nombres de las entradas en el directorio especificado por la ruta.
os — Miscellaneous operating system interfaces — Python 3.10.0 Documentation
El módulo os está incluido en la biblioteca estándar y no es necesario instalarlo. Sin embargo, se requiere «import».
La siguiente información se proporciona aquí.
- Obtiene una lista de nombres de archivos y directorios.
- Obtener una lista de nombres de archivos solamente
- Obtener una lista de nombres de directorios solamente
El siguiente es un ejemplo de estructura de archivos (directorios).
. └── testdir ├── dir1 ├── dir2 ├── file1 ├── file2.txt └── file3.jpg
Además de os.listdir(), también puede utilizar el módulo glob para obtener una lista de nombres de archivos y directorios (nombres de carpetas). glob permite especificar condiciones utilizando comodines (*), etc., e incluir recursivamente subdirectorios.
En Python 3.4 y posteriores, también es posible obtener una lista de archivos y directorios utilizando el módulo pathlib, que puede manipular rutas como objetos. Al igual que los globos anteriores, también se puede utilizar de forma condicional y recursiva.
Obtiene una lista de nombres de archivos y directorios.
Si utiliza os.listdir() tal cual, devolverá una lista de nombres de archivos y directorios.
import os path = "./testdir" files = os.listdir(path) print(type(files)) # <class 'list'> print(files) # ['dir1', 'dir2', 'file1', 'file2.txt', 'file3.jpg']
Lo que se obtiene es una lista de cadenas de ruta.
Obtener una lista de nombres de archivos solamente
Si quiere obtener una lista sólo de nombres de archivos, utilice la función os.path.isfile() para determinar si la ruta es un archivo. Pasar sólo el nombre del archivo como argumento de la función os.path.isfile() no funcionará, así que pase la ruta completa como se muestra a continuación.os.path.isfile(os.path.join(path, f))
files = os.listdir(path) files_file = [f for f in files if os.path.isfile(os.path.join(path, f))] print(files_file) # ['file1', 'file2.txt', 'file3.jpg']
Obtener una lista de nombres de directorios solamente
Si desea obtener una lista de nombres de directorios solamente, utilice os.path.isdir() de la misma manera.
files = os.listdir(path) files_dir = [f for f in files if os.path.isdir(os.path.join(path, f))] print(files_dir) # ['dir1', 'dir2']