En Python 3.5 y versiones posteriores, use la nueva **/
funcionalidad recursiva :
configfiles = glob.glob('C:/Users/sam/Desktop/file1/**/*.txt', recursive=True)
Cuando recursive
se establece, **
seguido de un separador de ruta coincide con 0 o más subdirectorios.
En versiones anteriores de Python, glob.glob()
no se pueden enumerar archivos en subdirectorios de forma recursiva.
En ese caso, usaría os.walk()
combinado con en su fnmatch.filter()
lugar:
import os
import fnmatch
path = 'C:/Users/sam/Desktop/file1'
configfiles = [os.path.join(dirpath, f)
for dirpath, dirnames, files in os.walk(path)
for f in fnmatch.filter(files, '*.txt')]
Esto recorrerá sus directorios de forma recursiva y devolverá todos los nombres de ruta absolutos a los .txt
archivos coincidentes . En este caso específico,fnmatch.filter()
puede ser excesivo, también puede usar una .endswith()
prueba:
import os
path = 'C:/Users/sam/Desktop/file1'
configfiles = [os.path.join(dirpath, f)
for dirpath, dirnames, files in os.walk(path)
for f in files if f.endswith('.txt')]