import os
def recursive_call(dir_path):
folder_array = os.scandir(dir_path)
files = 0
folders = 0
for path in folder_array:
if path.is_file():
files += 1
elif path.is_dir():
folders += 1
file_count, folder_count = recursive_call(path)
files += file_count
folders += folder_count
return files, folders
def get_size(dir_path):
size_in_bytes = 0
for i_size in os.scandir(dir_path):
size_in_bytes += os.path.getsize(i_size)
return size_in_bytes / 1024
input_path = input()
p_size = get_size(input_path)
p_files, p_folders = recursive_call(input_path)
print(f'Размер каталога (в Кб): {p_size}'
f'\nКоличесвто подкаталогов: {p_folders}'
f'\nКоличество файлов: {p_files}')
import os
def info_catalog(project, cnt_dir=0, cnt_file=0, size=0):
for i_path, i_dir, i_file in os.walk(project):
cnt_dir += len(i_dir)
cnt_file += len(i_file)
for i in i_file:
file_path = os.path.join(i_path, i)
size += os.path.getsize(file_path)
return size, cnt_dir, cnt_file
project = input('Введите папку: ')
path_to_project = os.path.abspath(os.path.join('..', '..', project))
info_size, info_cnt_dir, info_cnt_file = info_catalog(path_to_project)
print(path_to_project)
print(f'Размер каталога (в Кб): {info_size / 1024}')
print(f'Количество подкаталогов: {info_cnt_dir}')
print(f'Количество файлов: {info_cnt_file}')
import os
def info_catalog(dir_path):
path = os.scandir(dir_path)
files = 0
folders = 0
size = 0
for i_elem in path:
size += os.path.getsize(i_elem)
if os.path.isfile(i_elem):
files += 1
elif os.path.isdir(i_elem):
folders += 1
size_count, file_count, folder_count = info_catalog(i_elem)
size += size_count
files += file_count
folders += folder_count
return size, files, folders
info_path = input('Введите путь: ')
info_size, info_files, info_dir = info_catalog(info_path)
print('Размер каталога (в Кб):', info_size / 1024)
print('Количество подкаталогов:', info_dir)
print('Количество файлов:', info_files)
Важный момент: чтобы посчитать, сколько весит каталог, нужно найти сумму размеров всех вложенных в него файлов.
Результат работы программы на примере python_basic\Module14:
E:\PycharmProjects\python_basic\Module14
Размер каталога (в Кб): 8.373046875
Количество подкаталогов: 7
Количество файлов: 15