2013-07-15 17 views
5

Tôi có một tệp nén 1,4 GB và đang cố gắng để mang lại cho mỗi thành viên liên tiếp. Mô-đun zipfile tiếp tục ném ngoại lệ BadZipfile, nêu rõ rằngMô-đun zipfile Python sai lầm nghĩ rằng tôi có một zipfile kéo dài nhiều đĩa, ném BadZipfile lỗi

"zipfile.BadZipfile: zipfiles span span disk not supported".

Đây là mã của tôi:

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')) 

Tôi đang sử dụng Python 2.7.3. Tôi đã thử trên cả Windows 8 và ubuntu với cùng một kết quả. Bất kỳ trợ giúp rất nhiều đánh giá cao.

+0

Bạn có thể đăng tệp zip (hoặc liên kết tới nó) không? [Mã dẫn đến lỗi này] (http://hg.python.org/cpython/file/2.7/Lib/zipfile.py#l176) khá đơn giản; nó kiểm tra xem tiêu đề của tệp có khai báo nhiều hơn một đĩa hoặc số đĩa của tệp là bất kỳ thứ gì khác không. – phihag

+0

Cảm ơn phihag. Rất tiếc, tôi không thể đăng tệp vì nó chứa dữ liệu khách hàng bí mật. – user1541702

+0

Bạn có thể tạo một tệp zip có dữ liệu thử nghiệm lớn mà vẫn hiển thị sự cố không? – phihag

Trả lời

5

tôi nhận được lỗi tương tự trên một tập tin tương tự mặc dù tôi đang sử dụng python 3.4

Đã có thể sửa chữa nó bằng dòng chỉnh sửa 205 trong mã nguồn zipfile.py:

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

tới:

if diskno != 0 or disks > 1: 

Hy vọng điều này sẽ giúp

Các vấn đề liên quan