Dans Python 3.5 et plus récent, utilisez la nouvelle **/fonctionnalité récursive :
configfiles = glob.glob('C:/Users/sam/Desktop/file1/**/*.txt', recursive=True)
Lorsque recursiveest défini, **suivi d'un séparateur de chemin correspond à 0 ou plusieurs sous-répertoires.
Dans les versions antérieures de Python, glob.glob()impossible de répertorier les fichiers dans les sous-répertoires de manière récursive.
Dans ce cas, j'utiliserais os.walk()combiné avec à la fnmatch.filter()place:
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')]
Cela parcourra vos répertoires de manière récursive et retournera tous les chemins absolus vers les .txtfichiers correspondants . Dans ce cas précis, cela fnmatch.filter()peut être excessif, vous pouvez également utiliser un .endswith()test:
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')]