Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

zipfile decompress problems

560 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

0 new messages