4 / 4 / 0
Регистрация: 01.11.2023
Сообщений: 88

Структура архива

13.01.2024, 12:45. Показов 4067. Ответов 4

Студворк — интернет-сервис помощи студентам
Дополните вывод задачи «Структура архива» информацией о размере каждого файла в человекочитаемом формате.

Размер надо выводить через пробел после имени файла.
Формат ввода
В каталоге с вашей программой обязательно будет находиться файл input.zip. Его структуру и надо показывать.
Формат вывода
1
2
3
files
123.txt 25КБ
libs
4


Код из первой задачи:
Python
1
2
3
4
5
6
7
import os
from zipfile import ZipFile
 
with ZipFile('input.zip') as filezip:
    for name in filezip.namelist():
        item = name.rstrip("/").split("/")
        print("  " * (len(item) - 1) + item[-1])
Помогите пожалуйста!!!
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.01.2024, 12:45
Ответы с готовыми решениями:

Структура архива
Выводить файловую структуру мы научились. Теперь на очереди — архивы. Напишите программу, на вход которой поступает zip-архив с именем...

Структура архива
Выводить файловую структуру мы научились. Теперь на очереди — архивы. Напишите программу, на вход которой поступает zip-архив с именем...

Взлом архива
Здравствуйте! Помогите пожалуйста дописать код для взлома архива в цикле While, у меня правильно не выходит( import string import...

4
4 / 3 / 1
Регистрация: 07.10.2023
Сообщений: 7
14.01.2024, 19:59
Лучший ответ Сообщение было отмечено DanMAm как решение

Решение

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
from zipfile import ZipFile
 
 
def human_read_format(size):
    sizes = ['Б', 'КБ', 'МБ', 'ГБ']
    ind = 0
    for i in range(len(sizes)):
        if size / (1024 ** i) < 1:
            break
        ind = i
    return f'{round(size / (1024 ** ind))}{sizes[ind]}'
 
 
with ZipFile('input.zip') as myzip:
    for file in myzip.namelist():
        b = ''
        a = file.rstrip('/').split('/')
        if (a[-1][-1] == 't' and a[-1][-2] == 'x'
                or a[-1][-1] == 'x' and a[-1][-2] == 'c' and a[-1][-3] == 'o'
                or a[-1][-1] == 'x' and a[-1][-2] == 's' and a[-1][-3] == 'l'):
            filesize = myzip.getinfo(str(file)).file_size
            b = human_read_format(filesize)
        print('  ' * (len(a) - 1) + a[-1] + ' ' + b)
2
4 / 4 / 0
Регистрация: 01.11.2023
Сообщений: 88
17.01.2024, 08:44  [ТС]
QFAL1, Большое спасибо, Вы не могли бы еще помочь с ОДНОЙ задачкой:

Большинство пользователей компьютеров сталкиваются с тем, что приходится чистить жесткий диск от старых файлов. Для этого надо составить список самых «замусоренных» каталогов, то есть каталогов, содержащих большое количество файлов или других каталогов.

Вам предстоит написать программу, которая для некоторого пути создает и выводит на экран список TOP-10 таких каталогов, причем вывод надо организовать в порядке убывания размера.

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

ubuntu-17.04-desktop-amd64.iso - 1ГБ
LinuxLite_3.6-VB-32bit.7z - 906МБ
Новая папка.zip - 713МБ
OnlinePythonTutor-master - 644МБ
Telegram Desktop - 540МБ
OnlinePythonTutor-master.zip - 256МБ
pycharm-community-2018.1.3.dmg - 246МБ
pycharm-community-2018.2.1.dmg - 239МБ
eclipse-cpp-oxygen-R-macosx-cocoa-x86_64.dmg - 198МБ
pycharm-community-2017.2.3.dmg - 184МБ
Ещё раз большое спасибо за код)
0
4 / 3 / 1
Регистрация: 07.10.2023
Сообщений: 7
17.01.2024, 18:15
Обращайся
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import os
 
 
def human_read_format(size):
    sizes = ['Б', 'КБ', 'МБ', 'ГБ']
    ind = 0
    for i in range(len(sizes)):
        if size / (1024 ** i) < 1:
            break
        ind = i
    return f'{round(size / (1024 ** ind))}{sizes[ind]}'
 
 
def get_size(start_path='.'):
    total_size = 0
    for dirpath, dirnames, filenames in os.walk(start_path):
        for f in filenames:
            fp = os.path.join(dirpath, f)
            # skip if it is symbolic link
            if not os.path.islink(fp):
                total_size += os.path.getsize(fp)
 
    return total_size
 
 
os.chdir('C:/')
numbfile = 0
lst = os.listdir()
for i in range(len(lst)):
    size = human_read_format(get_size(lst[numbfile]))
    if size != '0Б':
        print(f'{lst[numbfile]} \t{size}')
    numbfile += 1
1
4 / 4 / 0
Регистрация: 01.11.2023
Сообщений: 88
18.01.2024, 11:26  [ТС]
QFAL1, Большое спасибо за код, ооочень выручил)
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.01.2024, 11:26
Помогаю со студенческими работами здесь

Структура архива
Ограничение времени 1 секунда Ограничение памяти 64Mb Ввод input.zip Вывод стандартный вывод или output.txt Выводить файловую...

Создание архива
Задача: Системный администратор вспомнил, что давно не делал архива пользовательских файлов. Однако, объем диска, куда он может...

Отправка Архива
Всем здравствуйте! Подскажите, пожалуйста: Отправляю Архив пользователю через телеграм-бот. Архив нормальный, с целыми файлами....

Открытие zip архива
Добрый день, подскажите пожалуйста, что делает этот кусок кода? Что здесь происходит? Я просто вообще C# учу, но нужный мне принцип...

Создание архива с данными
Добрый день. Начал учить язык по книге &quot; Byte of Python &quot;. Столкнулся с заданием на создание резервных копий файлов. Но не могу понять...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

Новые блоги и статьи
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru