Cómo obtener todos los archivos de un directorio

  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

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.

python 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.md.

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.

Artículo relacionado - Python file-path

  • Cómo comprobar si un archivo existe en Python
  • comments powered by Disqus