Bad magic no. in python zipfile

S

stewart.midwinter

I've been experimenting with the python zipfile module, and have run
into a snag.

I'm able to create a new zipfile with the module's ZipFile class and
add files to it. After closing the file, I'm able to view the contents
of it with WinZip. I can also confirm that it is a python zip file by
using the is_zipfile() method. All good so far. However, under some
circumstances, I am unable to later read the file and extract its
contents. As soon as a I attempt to instantiate a new ZipFile
instance, I receive an error regarding Bad Magic number. In the past,
I've seen that when trying to use a .pyc module, created with one
Python version, using another Python version. But in this case, I
created the zip file under Python 2.4.2 and tried to open it under
Python 2.4.2 as well. Any ideas on what to do? (apart from giving up
on Python and using winzip?)

On a separate topic, zipfile wasn't available under Python 1.5.2. I
need to create zip files using that old version, since it's the only
one installed on a remote server. Any suggestions on what to do?

thanks
S
 
P

Peter Hansen

add files to it. After closing the file, I'm able to view the contents
of it with WinZip. I can also confirm that it is a python zip file by
using the is_zipfile() method. All good so far. However, under some
circumstances, I am unable to later read the file and extract its
contents. As soon as a I attempt to instantiate a new ZipFile
instance, I receive an error regarding Bad Magic number. In the past,
I've seen that when trying to use a .pyc module, created with one
Python version, using another Python version. But in this case, I
created the zip file under Python 2.4.2 and tried to open it under
Python 2.4.2 as well. Any ideas on what to do?

Maybe try posting the full traceback so we can see the "Bad Magic
Number" error you are getting...

-Peter
 
S

stewart.midwinter

okay, I've figured out the problem - the zip file was being mangled by
a file transfer. I was fetching a remote python-generated zip file in
8k chunks, and then writing those chunks to a file. At first I was
using an array to store the data in, and had the 'bad magic number'
problem. This may have been due to writing the chunks out to a local
file as strings, which would definitely have corrupted the file; I also
noticed that the local copy was several kb larger, probably due to the
line endings being added. When I took care to write the file as a
binary file, all was well. case closed.

BTW, regarding using zipfile under Python 1.5.2... I found zipfile.py
in Python 1.6, but it wouldn't run. You need to build Python 1.5 with
the binascii.c and zlibmodule.c from Python 1.6, since a CRC32 method
has been added to those modules. This was more trouble than it was
worth, in the end.

S
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,744
Messages
2,569,483
Members
44,903
Latest member
orderPeak8CBDGummies

Latest Threads

Top