in Python 2.6 ZipFile oggetto ha un metodo di open che può aprire un file con nome in zip come oggetto file, è possibile citarlo per leggere i dati in blocchi
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)
Modifica: Per ottenere la dimensione totale si può fare qualcosa di simile
total_size = sum((file.file_size for file in zf.infolist()))
Così ora è possibile stampare i progressi totale e il progresso per file, ad esempio, supponiamo di avere solo 1 grande file in formato zip, altri metodi (ad esempio contando solo le dimensioni e l'estrazione dei file) non daranno alcun progresso.
fonte
2010-10-24 03:50:23
Perfetto! Questo è esattamente quello che volevo !! Grazie! –