Obtener una lista de nombres de archivos y directorios en Python.

Negocio

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']
Copied title and URL