2012-03-21 28 views
7

Tôi đã tải lên thư mục zip bằng cách sử dụng đầu vào tệp, nhưng khi tôi kiểm tra xem zip này có hợp lệ hay không, kết quả là: không phải là tệp pkzip hợp lệ, tôi không biết đặc tả hợp lệ là gì pkzip. tôi đã sử dụng mã này để kiểm tra:?Tệp zip hợp lệ trong python

form = cgi.FieldStorage() 
file_upload = form['file[]'] 
if zipfile.is_zipfile(file_upload.filename): 
    print "%s is a valid pkzip file" % file_upload.filename 
else: 
    print "%s is not a valid pkzip file" % file_upload.filename 

Tôi không biết tại sao ví dụ như khi tôi tải lên test.zip, o/p sẽ là: test.zip không phải là một tập tin PKZip hợp lệ, tôi cần sự trợ giúp.Thanks

+0

Bạn đang sử dụng phiên bản Python nào? – katrielalex

Trả lời

10

zipfile.is_zipfile có đường dẫn đến tệp hoặc đối tượng giống như tệp. Bạn đang vượt qua nó không, vì vậy nó không thành công.

Thay vào đó hãy hỏi về số file_upload.file.

+0

: tôi sử dụng python 2,5 và làm việc trên nhật thực, tôi đã thử như bạn nói, file_upload.file, nhưng lỗi là: co giật để Unicode: cần chuỗi hoặc bộ đệm, cStringIO.StringO tìm thấy. Vấn đề là gì, xin vui lòng? –

+0

Bạn sẽ cần phải đọc tệp - nó có thể là '.getvalue()'; Tôi không thể nhớ chính xác phương thức - và chuyển dữ liệu sang 'zipfile'. Hoặc viết nó vào một 'TemporaryFile'. – katrielalex

+0

@ katrielalex: làm thế nào tôi có thể nhận được đường dẫn của tập tin được tải lên để sử dụng nó trong: zipfile.is_zipfile ??? Cảm ơn –

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