Я думаю, что это достаточно эффективно ... Команда where.exe /R C:\ *.mp3
будет действовать точно так же, как ваш скрипт на python.И ваш сценарий работает даже быстрее, чем встроенная команда windows, поэтому он должен быть достаточно эффективным.Я не знаю, был ли это ваш точный вопрос, если это не так, я думаю, что не совсем понятно, что вы на самом деле имеете в виду.
Кстати, вы могли бы использовать этот код, который будет печатать результаты в режиме реального времени:
import os
import fnmatch
def find(pattern, path):
for root, dirs, files in os.walk(path):
for name in files:
if fnmatch.fnmatch(name, pattern):
yield os.path.join(root, name)
Разница в том, что если вы, например, выполните
for i in find('*.mp3', 'C:\\'):
print(i)
, он напечатает каждый результат как можно быстрее.Ваш скрипт вернет весь список после завершения операции, в то время как этот скрипт напечатает напрямую.
Я не знаю, как объяснить это лучше, потому что мой английский не лучший, но вы можете просто попробоватьэто и увидеть разницу.
Это все же быстрее, чем Windows, встроенная в команду, кстати.