Cómo obtener todos los archivos de un directorio
-
os.listdir
para obtener todos los ficheros de un directorio en Python -
os.walk
para obtener todos los ficheros de un directorio en Python -
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,
- Versión para Python - Python 3
- 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
.
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
.
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 FacebookArtículo relacionado - Python File
- Cómo añadir texto a un archivo en Python
- Cómo comprobar si un archivo existe en Python
- Cómo encontrar archivos con una cierta extensión sólo en Python
- Cómo leer líneas específicas de un archivo en Python
- Bloquear un archivo en Python