Как пройти по каталогу и подсчитать количество папок и файлов а также сумму размеров всех файлов?

Рейтинг: 0Ответов: 1Опубликовано: 20.04.2023
def search_and_count_directory_and_file_size(path):
    count_directory = 0
    count_file = 0
    summ_count_size = 0
    for i in os.listdir(path):
        if os.path.isdir(os.sep.join([path, i])):
            count_directory += 1
        elif os.path.isfile(os.sep.join([path, i])):
            count_file += 1
            summ_count_size += os.path.getsize(os.sep.join([path, i]))
            search_and_count_directory_and_file_size(os.sep.join([path, i]))
            print(os.sep.join([path, i]))

    return count_directory, count_file, summ_count_size

path_in_file = r'C:\Users\Sklad\Python_Basic\Module21'

print(search_and_count_directory_and_file_size(path_in_file))

Ответы

▲ 0Принят
  1. Почему вы вызываете рекурсию, когда вам попадается файл? Вам нужно рекурсивно обходить каталоги, а не файлы, т.е. вызывать рекурсию в той ветке кода, где срабатывает os.path.isdir.
  2. При рекурсивном вызове функции вы теряете то, что функция возвращает. А нужно это учесть в ваших вычислениях, примерно так:
rec_count_directory, rec_count_file, rec_summ_count_size =\
    search_and_count_directory_and_file_size(os.sep.join([path, i]))
count_directory += rec_count_directory
...