Модуль Glob возвращает неправильное значение - PullRequest
0 голосов
/ 12 мая 2019

У меня есть несколько папок, как в примере ниже, и внутри каждой папки есть следующее количество файлов. Теперь, когда я хочу узнать, сколько файлов находится в папке Pos2, я получаю неправильный вывод. Для других папок это правильно. Я делаю что-то не так?

./a/Pos2/              8497 files              
./a/Pos22/             4227 files 
./a/Pos23/              2052 files 
./a/Pos26/              2633 files 

import glob
DIR='a/Pos2'
files = [f for f in glob.glob(DIR + "**/*.mat")]
len(files)

Я получаю ответ 17409. Это добавление файлов из всех папок. Я не знаю почему. Любая подсказка, что происходит?

1 Ответ

1 голос
/ 12 мая 2019
DIR='a/Pos2'
files = [f for f in glob.glob(DIR + "**/*.mat")]

DIR + "**/*.mat" приводит к "a/Pos2**/*.mat", что соответствует всем ./a/Pos2/*.mat, ./a/Pos22/*.mat, ./a/Pos23/*.mat, ./a/Pos26/*.mat.

Только для поискафайлы в a/Pos2, используйте "a/Pos2/*.mat" или DIR + "/*.mat".

Или, чтобы найти все файлы во всех подпапках a/Pos2, используйте "a/Pos2/**/*.mat" или DIR + "/**/*.mat".Обратите внимание на дополнительные /.

...