Dans Python 3.5 et les versions plus récentes, utilisez la nouvelle fonction récursive **/
fonctionnalité :
configfiles = glob.glob('C:/Users/sam/Desktop/file1/**/*.txt', recursive=True)
Quand recursive
est réglé, **
suivi d'un séparateur de chemin correspond à 0 ou plusieurs sous-répertoires.
Dans les versions antérieures de Python, glob.glob()
ne peut pas lister les fichiers dans les sous-répertoires de manière récursive.
Dans ce cas, j'utiliserais os.walk()
combiné avec fnmatch.filter()
à la 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 renverra tous les noms de chemin absolus vers les correspondances. .txt
des fichiers. Dans ce spécifique cas le fnmatch.filter()
peut s'avérer excessif, vous pourriez également utiliser une .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')]