Как пройти по каталогу и подсчитать количество папок и файлов а также сумму размеров всех файлов?
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))
Ответы (1 шт):
Автор решения: CrazyElf
→ Ссылка
- Почему вы вызываете рекурсию, когда вам попадается файл? Вам нужно рекурсивно обходить каталоги, а не файлы, т.е. вызывать рекурсию в той ветке кода, где срабатывает
os.path.isdir. - При рекурсивном вызове функции вы теряете то, что функция возвращает. А нужно это учесть в ваших вычислениях, примерно так:
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
...