zipfile decompress problems

544 views
Skip to first unread message

Waguy

unread,
Jan 16, 2006, 11:42:05 AM1/16/06
to
Hi all,

I am new to python and want to create a process to unzip large numbers of
zip files I get from a SOAP application. The files all have a ZIP extention
and can be unzipped using WinZip.

However when I try opening the files using zlib or zipfile modules I get the
following error:

Traceback (most recent call last):
File "<pyshell#88>", line 1, in -toplevel-
file = zipfile.ZipFile("c:\\chessy.zip", "r")
File "C:\Python24\lib\zipfile.py", line 210, in __init__
self._GetContents()
File "C:\Python24\lib\zipfile.py", line 230, in _GetContents
self._RealGetContents()
File "C:\Python24\lib\zipfile.py", line 242, in _RealGetContents
raise BadZipfile, "File is not a zip file"
BadZipfile: File is not a zip file

The code I used in python was:

import zipfile
file = zipfile.ZipFile("c:\\chessy.zip", "r")

I tried to do the same with a zip file I created using WinZip and it worked
fine. I have been searching the web for about two days and haven't found
anything helpful.

Can anyone help with this? I have the zip I can send, however I tried to
send this message with it attached and it didn't get posted.

Cheers,


Giovanni Bajo

unread,
Jan 16, 2006, 2:21:10 PM1/16/06
to
Waguy wrote:

> import zipfile
> file = zipfile.ZipFile("c:\\chessy.zip", "r")


Use "rb".
--
Giovanni Bajo


Waguy

unread,
Jan 16, 2006, 2:26:30 PM1/16/06
to
I tried that to and it didn't work, got the same message

Thanks though,

"Giovanni Bajo" <raN...@deveSPAMler.com> wrote in message
news:dqgrng$t2o$1...@nnrp.ngi.it...

Giovanni Bajo

unread,
Jan 16, 2006, 2:38:15 PM1/16/06
to
Waguy wrote:

> I tried that to and it didn't work, got the same message
> Thanks though,


Can you send / provide a link to a minimal zip file which reproduces the
problem?
--
Giovanni Bajo


Carl Banks

unread,
Jan 17, 2006, 2:39:49 AM1/17/06
to

I'm guessing the downloaded zip files have a faulty magic number or an
odd value that trips up the zipfile module but that winzip ignores.

Another possibility is this: From the documentation:

"This module does not currently handle ZIP files which have appended
comments, or multi-disk ZIP files."

One thing I've noticed is that, when downloading zip files from a
service of some sort, they often seem to have appended comments.
("This file downloaded from www.extremezipfiles.com, blah blah blah.")

Carl Banks

Scott David Daniels

unread,
Jan 19, 2006, 5:26:52 PM1/19/06
to wag...@yahoo.com
Carl Banks wrote:

> Waguy wrote:
>> I am new to python and want to create a process to unzip large numbers of
>> zip files I get from a SOAP application. The files all have a ZIP extention
>> and can be unzipped using WinZip....
>> Can anyone help with this? ...

>
> Another possibility is this: From the documentation:
> "This module does not currently handle ZIP files which have appended
> comments, or multi-disk ZIP files."
>
> One thing I've noticed is that, when downloading zip files from a
> service of some sort, they often seem to have appended comments.
> ("This file downloaded from www.extremezipfiles.com, blah blah blah.")

Based on the file Waguy originally sent, you could try using this:

import zipfile, cStringIO
def getzip(filename, ignoreable=100):
try:
return zipfile.ZipFile(filename)
except zipfile.BadZipfile:
original = open(filename, 'rb')
try:
data = original.read()
finally:
original.close()
position = data.rindex(zipfile.stringEndArchive,
-(22 + ignoreable), -20)
coredata = cStringIO.StringIO(data[: 22 + position])
return zipfile.ZipFile(coredata)

--Scott David Daniels
scott....@acm.org

Reply all
Reply to author
Forward
0 new messages