Cómo obtener todos los archivos de un directorio

Jinku Hu 30 enero 2023
  1. os.listdir para obtener todos los ficheros de un directorio en Python
  2. os.walk para obtener todos los ficheros de un directorio en Python
  3. glob.glob para obtener todos los ficheros de un directorio en Python
Cómo obtener todos los archivos de un directorio

Podrías tener al menos 3 métodos para listar todos los ficheros de un directorio en Python, usando las funciones de Python os.listdir, os.walk y glob.glob.

A continuación se muestra la presunción de este tutorial,

  1. Versión para Python - Python 3
  2. El nombre de la ruta es dirPath y existe en el sistema, por lo tanto, no necesitaremos comprobar la existencia del directorio.

os.listdir para obtener todos los ficheros de un directorio en Python

os.listdir lista todos los archivos y carpetas en el directorio, por lo tanto necesita código extra para filtrar los archivos del resultado.

import os

dirPath = r"C:\git\DelftStack\content"
result = [f for f in os.listdir(dirPath) if os.path.isfile(os.path.join(dirPath, f))]
print(result)

os.listdir devuelve sólo la ruta relativa de los archivos o carpetas con referencia a dirPath, y la función os.path.isfile necesita la ruta completa para comprobar si es un archivo o no, por lo tanto necesitamos usar os.path.join para combinar la dirPath y los resultados de os.listdir para obtener la ruta completa de los archivos o rutas.

os.walk para obtener todos los ficheros de un directorio en Python

os.walk generates the file names in the given directory by traversing the tree top-down (per default) or bottom-up. It yields a 3-tuple (dirpath, dirname, filenames) each time it walks to the directory in the tree (including top itself).

Todos los archivos están incluidos en la tupla para el primer rendimiento de os.walk, por lo tanto una forma pythonica es

import os

dirPath = r"C:\git\DelftStack\content"
result = next(os.walk(dirPath))[2]
print(result)

glob.glob para obtener todos los ficheros de un directorio en Python

El módulo glob encuentra todas las rutas que coinciden con el patrón específico dado de acuerdo con las reglas usadas en el shell de Unix. glob.glob devuelve la lista de nombres de ruta que coinciden con el patrón de nombres de ruta dado. La ruta del archivo tiene el patrón *.*, que es lo que se pasará a glob.glob como argumento de entrada.

import glob

dirPathPattern = r"C:\git\DelftStack\content\*.*"
result = glog.glob(dirPathPattern)
print(result)

glob.glob devuelve la ruta completa de los archivos coincidentes, como C:\git\DelftStack\content\about.rst.

Advertencia

El resultado del método glob.glob como se muestra aquí no puede garantizar que sean sólo archivos porque sólo comprueba si el nombre de la ruta coincide con el patrón, pero no comprueba si es un archivo o un directorio.

Por ejemplo, si un directorio tiene el patrón de nombres como test.test, entonces este directorio también se incluye en el resultado.

Si necesita asegurarse de que la salida contiene sólo archivos, necesita verificarlo con la función os.path.isfile.

Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Artículo relacionado - Python File

Artículo relacionado - Python Dictionary