Дубликаты файлов · Шаг 4 из 4
Отчёт, что удалить
Группы копий найдены. Человеку нужен ответ на два вопроса: какой файл в каждой группе оставить и сколько места освободится, если удалить остальные. Оставлять разумно тот, у которого путь короче: фото/отпуск.jpg скорее оригинал, чем загрузки/копия/копия (2)/отпуск.jpg.
Что сделать
Соберите отчёт по группам копий: что оставить, какие копии лишние и сколько места освободится.
Что приходит
gruppy— список групп одинаковых файлов, каждая — список путейrazmery— словарь «путь → размер в байтах»
Что вернуть
Текст отчёта строкой; групп нет — "Одинаковых файлов нет.". Образец — в «Подробных правилах».
Допишите функцию otchet в редакторе справа.
Результат верните через return — то, что
напечатано, на проверку не влияет.
В проекте
Утилита печатает то, что вы вернули, — это и есть её ответ человеку.
Одна группа из двух файлов по 2048 байт: оставить первый по алфавиту из путей одной длины, второй — копия, освободится 2,0 КБ. Отчёт — четыре строки и итог через пустую строку.
otchet([["a/x.jpg", "b/x.jpg"]], {"a/x.jpg": 2048, "b/x.jpg": 2048})
'Одинаковых: 2, по 2,0 КБ — освободится 2,0 КБ\n оставить: a/x.jpg\n копия: b/x.jpg\n\nИтого освободится 2,0 КБ.'
Образец для двух групп:
Одинаковых: 3, по 1,5 МБ — освободится 3,0 МБ
оставить: video/film.mkv
копия: zagruzki/film (1).mkv
копия: zagruzki/film.mkv
Одинаковых: 2, по 700 Б — освободится 700 Б
оставить: a.txt
копия: b.txt
Итого освободится 3,0 МБ.
Оставить — путь с наименьшим числом знаков, при равной длине — первый по алфавиту. Копии — остальные пути по алфавиту. Освободится — размер файла × число копий.
Группы — по убыванию того, сколько освободится; при равном — по алфавиту пути, который оставить. Между группами и перед строкой «Итого» — пустая строка.
Размер — меньше 1024 байт — "700 Б"; меньше 1024² — в КБ, меньше 1024³ — в МБ, иначе в ГБ — с одним знаком после запятой и запятой вместо точки: 1536 — "1,5 КБ".
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.