[Python-Dev] Problems with zipfile.py

Fred L. Drake, Jr. fdrake@acm.org
Sun, 8 Apr 2001 11:21:27 -0400 (EDT)


James C. Ahlstrom writes:
 > It turns out that InfoZip's Wiz version 5.02 (and maybe other
 > InfoZip versions) creates ZIP files with an incorrect value
 > for "extra data length" in the central directory, but the correct
 > value in the file header.  The "extra data" is before the compressed
 > file data, and so this causes the file data offset to be off slightly
 > thus causing complaints from the zlib decompressor.  I changed
 > zipfile.py to use the file header value, and it fixes the problem.

  This was fixed by a patch from Jens Quade in CVS revision 1.7 of
zipfile.py.

 > I also added a new method restore(self, name, fileobject) which
 > was suggested some time ago by MAL.  It writes to an open file
 > or any other object with a write() method.  It avoids the need
 > to read the whole file into memory.

  Cool!  I'll try to look at this Monday, but I'm not sure it should
go in for Python 2.1 -- it is a new feature, and we're supposed to be
in a feature freeze.

 > I also changed the "raise" statements to use the "zipfile.error"
 > exception.  This agrees with the documentation, but previously
 > zipfile raised a variety of exceptions.  This also fixes the
 > complaint that "BadZipfile" should be spelled "BadZipFile".

  I think the exceptions situation has been cleaned up as well.  You
might want to take a look at the version in Python CVS (soon to be
Python 2.1) to see what else has changed (most substantially, Itamar
Shtull-Trauring added support for loading ZIP files from open file
objects).


  -Fred

-- 
Fred L. Drake, Jr.  <fdrake at acm.org>
PythonLabs at Digital Creations