Эффективный способ найти общее количество файлов в каталоге - PullRequest
3 голосов
/ 10 сентября 2011

Я создаю органайзер музыкальных файлов (в python2), в котором я читаю метаданные всех файлов и затем помещаю их в нужную папку.

Теперь я уже готов с интерфейсом командной строкино этот сценарий показывает обратную связь в том виде, в котором он показывает «С каким файлом он сейчас работает?»1006 *

Итак, я хотел бы знать, как наиболее эффективно найти общее количество mp3-файлов, доступных в каталоге (рекурсивное сканирование во всех последующих каталогах).

Моя идея состоит в том, чтобы отслеживать общее количество обработанных файлов и отображать индикатор выполнения в соответствии с этим.Есть ли лучший способ (с точки зрения производительности), пожалуйста, не стесняйтесь руководство.

Я хочу, чтобы в моем приложении не было какого-либо кода, зависящего от платформы.Если к этой идее прилагается серьезное снижение производительности, предложите Linux.

Ответы [ 2 ]

2 голосов
/ 10 сентября 2011

Прошу прощения за это, но нет никакого способа сделать это более эффективно, чем рекурсивный поиск файлов (по крайней мере, независимо от платформы (или файловой системы)).

Если файловая система может вам помочь, то и вам это не удастся.

Причина невозможности сделать это без рекурсивного сканирования заключается в том, как устроена файловая система. Каталог может рассматриваться как файл, и он содержит список всех файлов, которые он содержит. Чтобы найти что-то в подкаталоге, вы должны сначала открыть каталог, затем открыть подкаталог и найти его.

1 голос
/ 10 сентября 2011

@ shadyabhi: если у вас много подкаталогов, возможно, вы можете ускорить процесс, используя os.listdir и multiprocessing.Process для повторения в каждую папку.

...