Я знаю, как извлечь zip-архив с помощью Python, но как именно я показываю ход этого извлечения в процентах?Извлечь ZipFile с помощью Python, отобразить Прогресс Процент?
7
A
ответ
6
метод извлечения не обеспечивает обратного вызова для этого, поэтому для получения размера несжатого файла необходимо будет использовать getinfo
, а затем открыть файл, считанный с него в блоках, и записать его в место, где вы хотите, чтобы файл идти и обновлять процент можно было бы также, чтобы восстановить время изменения, если это разыскивается пример:
import zipfile
z = zipfile.ZipFile(some_source)
entry_info = z.getinfo(entry_name)
i = z.open(entry_name)
o = open(target_name, 'w')
offset = 0
while True:
b = i.read(block_size)
offset += len(b)
set_percentage(float(offset)/float(entry_info.file_size) * 100.)
if b == '':
break
o.write(b)
i.close()
o.close()
set_attributes_from(entry_info)
это извлекающий entry_name
к target_name
большинство это также сделано shutil.copyfileobj
, но это не имеет обратного вызова для прогресса либо
источник метода ZipFile.extract
называет _extract_member
использует:
source = self.open(member, pwd=pwd)
target = file(targetpath, "wb")
shutil.copyfileobj(source, target)
source.close()
target.close()
где участник будет преобразован из названия к объекту ZipInfo по getinfo(member)
если он не был объектом ZipInfo
Любая графическая среда, которую вы планируете использовать? – 2010-12-03 01:05:33
Tkinter, если это то, о чем вы говорите. Все, что мне нужно - это отображать процент текста. – 2010-12-03 01:06:37