Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/13: Рейтинг темы: голосов - 13, средняя оценка - 5.00
4 / 4 / 0
Регистрация: 01.11.2023
Сообщений: 88

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

13.01.2024, 12:45. Показов 3968. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор значения справочника
Maks 21.03.2026
Процедура ВодителиНачалоВыбора(Элемент, ДанныеВыбора, ВыборДобавлением, СтандартнаяОбработка) / / Отключаем стандартную обработку (стандартное открытие формы выбора без фильтров) . . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru