В Python 3.5 и новее используйте новую рекурсивную **/
функциональность:
configfiles = glob.glob('C:/Users/sam/Desktop/file1/**/*.txt', recursive=True)
Если recursive
установлен, **
то разделитель путей соответствует 0 или более подкаталогам.
В более ранних версиях Python glob.glob()
не может рекурсивно перечислять файлы в подкаталогах.
В этом случае я бы использовать в os.walk()
сочетании с fnmatch.filter()
вместо этого:
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')]
Это будет рекурсивно просматривать ваши каталоги и возвращать все абсолютные пути к соответствующим .txt
файлам. В этом конкретном случае fnmatch.filter()
может быть излишним, вы также можете использовать .endswith()
тест:
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')]