В Python 2.6 у объекта ZipFile есть метод open , который может открывать именованный файл в zip как объект файла, вы можете подать в суд на это, чтобы прочитать данные кусками
import zipfile
import os
def read_in_chunks(zf, name):
chunk_size= 4096
f = zf.open(name)
data_list = []
total_read = 0
while 1:
data = f.read(chunk_size)
total_read += len(data)
print "read",total_read
if not data:
break
data_list.append(data)
return "".join(data_list)
zip_file_path = r"C:\Users\anurag\Projects\untitled-3.zip"
zf = zipfile.ZipFile(zip_file_path, "r")
for name in zf.namelist():
data = read_in_chunks(zf, name)
Изменить: Чтобы получить общий размер, вы можете сделать что-то вроде этого
total_size = sum((file.file_size for file in zf.infolist()))
Так что теперь вы можете распечатать общий прогресс и прогресс для файла, например, Предположим, у вас есть только один большой файл в zip, другие методы (например, просто подсчет размеров файлов и извлечение) не дадут никакого прогресса вообще.