Какой оптимальный алгоритм подсчета количества файлов?
оптимально - погуглить
stackoverflow.com/questions/7159607/list-directori...
stackoverflow.com/questions/229186/os-walk-without...
если еффективно
stackoverflow.com/a/15663760find <expr> -type f -printf '.' | wc -c
идеально - написать самому и померять производительность
Основная проблема в том, что в os.walk нельзя указать глубину поиска, есть ли решения этой проблемы? 
Рекурсивная функция с os.listdir() , os.path.isdir() и параметром глубины.