Cómo encontrar archivos con una cierta extensión sólo en Python
-
Método
glob.glob
para encontrar ficheros con cierta extensión -
os.listdir()
método para encontrar los archivos con cierta extensión -
Método
pathlib.glob
para encontrar archivos con cierta extensión - Encontrar archivos con cierta extensión en el directorio y sus subdirectorios en Python
-
Ficheros de búsqueda del módulo
pathlib
de forma recursiva
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')]
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