Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Пожалуйста, помогите с задачей на python!

Иван Морозов Ученик (98), на голосовании 1 год назад
Напишите программу, которая получает на вход путь до каталога (это может быть и просто корень диска) и выводит общее количество файлов и подкаталогов в нём. Также выведите на экран размер каталога в килобайтах (1 килобайт = 1024 байт).

Важный момент: чтобы посчитать, сколько весит каталог, нужно найти сумму размеров всех вложенных в него файлов.

Результат работы программы на примере python_basic\Module14:

E:\PycharmProjects\python_basic\Module14
Размер каталога (в Кб): 8.373046875
Количество подкаталогов: 7
Количество файлов: 15
Голосование за лучший ответ
Александор Заградский Мудрец (14287) 1 год назад
Вот пример кода на Python:

import os

def count_files_dirs_size(path):
size = 0
files = 0
dirs = 0
for dirpath, dirnames, filenames in os.walk(path):
for f in filenames:
fp = os.path.join(dirpath, f)
size += os.path.getsize(fp)
files += 1
dirs += len(dirnames)
return (files, dirs, size)


path = input("Введите путь до каталога: ")
(files, dirs, size) = count_files_dirs_size(path)

print("Размер каталога (в Кб):", size/1024)
print("Количество подкаталогов:", dirs)
print("Количество файлов:", files)


При запуске программы, пользователь должен ввести путь до каталога.
В функции `count_files_dirs_size` мы с помощью `os.walk` проходим по всем директориям и файлам в указанном каталоге.
Затем мы увеличиваем переменные `size` для подсчета размера каталога (суммируем размеры всех файлов), `files` для подсчета количества файлов и `dirs` для подсчета количества подкаталогов.
В функции мы возвращаем кортеж, содержащий количество файлов, каталогов и размер каталога.

После этого, мы выводим на экран результаты с помощью функции `print()`. Размер каталога в килобайтах, подсчитывается делением переменной `size` на 1024.import os
MAESTRO Ученик (205) 1 год назад
 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}')
Юрий МС Знаток (364) 1 год назад
 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}')
Влад Королев Ученик (242) 10 месяцев назад
 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)

Похожие вопросы