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 recursive
est 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 .txt
fichiers 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')]