Cómo encontrar archivos con una cierta extensión sólo en Python

Jinku Hu 30 enero 2023
  1. Método glob.glob para encontrar ficheros con cierta extensión
  2. os.listdir() método para encontrar los archivos con cierta extensión
  3. Método pathlib.glob para encontrar archivos con cierta extensión
  4. Encontrar archivos con cierta extensión en el directorio y sus subdirectorios en Python
  5. Ficheros de búsqueda del módulo pathlib de forma recursiva
Cómo encontrar archivos con una cierta extensión sólo en Python

Este artículo introduce diferentes métodos para encontrar ficheros con una cierta extensión sólo en Python.

Método glob.glob para encontrar ficheros con cierta extensión

Podríamos usar el módulo glob.glob para encontrar los archivos con una cierta extensión sólo en Python.

import glob

targetPattern = r"C:\Test\*.txt"
glob.glob(targetPattern)

Los códigos anteriores muestran cómo encontrar los archivos con la extensión txt en el directorio C:\Test.

os.listdir() método para encontrar los archivos con cierta extensión

La función os.listdir() lista todos los archivos en el directorio dado, sin la información de la ruta del archivo. Puede extraer los archivos con la extensión específica utilizando la función str.endswith().

>>> import os
>>> fileDir = r"C:\Test"
>>> fileExt = r".txt"
>>> [_ for _ in os.listdir(fileDir) if _.endswith(fileExt)]
['test.txt', 'test1.txt']

Necesita construir la ruta completa con os.path.join() function.

>>> import os
>>> fileDir = r"C:\Test"
>>> fileExt = r".txt"
>>> [os.path.join(fileDir, _) for _ in os.listdir(fileDir) if _.endswith(fileExt)]
['C:\\Test\\test.txt', 'C:\\Test\\test1.txt']

Método pathlib.glob para encontrar archivos con cierta extensión

El módulo pathlib module está introducido en Python 3.4 que ofrece rutas de sistemas de ficheros orientados a objetos. Proporciona dos estilos: Rutas de Windows en el sistema operativo Windows y rutas POSIX en sistemas similares a Unix.

>>> import pathlib
>>> fileDir = r"C:\Test"
>>> fileExt = r"*.txt"
>>> list(pathlib.Path(fileDir).glob(fileExt))
[WindowsPath('C:/Test/test.txt'), WindowsPath('C:/Test/test1.txt')]

El resultado se representa con WindowsPath, y puede convertir el resultado en la representación de la cadena añadiendo str(), como

>>> [str(_) for _ in pathlib.Path(fileDir).glob(fileExt)]
['C:\\Test\\test.txt', 'C:\\Test\\test.txt']

Encontrar archivos con cierta extensión en el directorio y sus subdirectorios en Python

El patrón C:\Test\*.txt sólo busca los archivos txt en el directorio C:\Test, pero no en sus subdirectorios. Si quiere obtener también archivos txt en los subdirectorios, puede modificar el patrón un poco.

import glob

targetPattern = r"C:\Test\**\*.txt"
glob.glob(targetPattern)

Los comodines ** entre Test y \*.txt significa que debe encontrar los archivos txt tanto en el directorio como en sus subdirectorios.

Ficheros de búsqueda del módulo pathlib de forma recursiva

De forma similar a añadir ** en glob.glob para buscar archivos de forma recursiva, también puede añadir ** en el método pathlib.Path.glob para encontrar los archivos con cierta extensión de forma recursiva.

>>> import pathlib
>>> fileDir = r"C:\Test"
>>> fileExt = r"**\*.txt"
>>> list(pathlib.Path(fileDir).glob(fileExt))
[WindowsPath('C:/Test/test.txt'), WindowsPath('C:/Test/test1.txt'), WindowsPath('C:/Test/sub/test1.txt')]
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