2013-07-15 8 views
5

Ho un file zip da 1,4 GB e sto provando a cedere ogni membro in successione. Il modulo zipfile continua a lanciare un'eccezione BadZipfile, affermando cheIl modulo zipfile Python pensa erroneamente di avere un file zip che si estende su più dischi, genera errore BadZipfile

"zipfile.BadZipfile: zipfiles che si estendono su più dischi non sono supportati".

Ecco il mio codice:

import zipfile 

def iterate_members(zip_file_like_object): 
    zflo = zip_file_like_object 
    assert zipfile.is_zipfile(zflo) # Here is where the error happens. 
    # If I comment out the assert, the same error gets thrown on this next line: 
    with zipfile.ZipFile(zflo) as zip: 
    members = zip.namelist() 
    for member in members: 
     yield member 

fn = "filename.zip" 
iterate_members(open(fn, 'rb')) 

sto usando Python 2.7.3. Ho provato su Windows 8 e su Ubuntu con lo stesso risultato. Qualsiasi aiuto è molto apprezzato.

+0

potete inserire il file zip (o un link ad esso)? Il [codice che porta a questo errore] (http://hg.python.org/cpython/file/2.7/Lib/zipfile.py#l176) è piuttosto semplice; controlla se l'intestazione del file dichiara più di un disco o il numero di disco del file diverso da zero. – phihag

+0

Grazie a phihag. Purtroppo non posso pubblicare il file poiché contiene dati client riservati. – user1541702

+0

Bene, puoi generare un file zip con grandi dati di test che mostra ancora il problema? – phihag

risposta

5

ottengo lo stesso errore su un file simile, anche se sto usando Python 3.4

è stato in grado di risolvere il problema modificando la linea 205 nel codice sorgente zipfile.py:

if diskno != 0 or disks != 1: 
    raise BadZipFile("zipfiles that span multiple disks are not supported") 

a:

if diskno != 0 or disks > 1: 

Spero che questo aiuti

Problemi correlati