Add file to zip, or replace file in zip

Scott David Daniels scott.daniels at
Mon May 1 19:48:01 CEST 2006

Edward Elliott wrote:
> Scott David Daniels wrote:
 > ... You windows kids and your crazy data formats.
There were a few oth OS's than Linux and Windows.  Maybe you
should call me "you crazy Tenex kid."  Knuth says, "the fastest
way to search is to know where to go." -- Zips have locations of
files, and you needn't read in a lot of a huge zip to find and
extract a couple of files.

>> Any error 
>> (or raised exception like Control-C) during this process is likely
>> to leave you with an inconsistent and therefore unreadable zip file.
> Isn't that true of any modifications to the zip archive, e.g. appending a
> new file rather than replacing an existing one?

Nope.  There is enough info in the zip to rebuild the directory
with a forward scan of the zip.  (Each entry has a file descr).
"appending" is really replacing backing up before the zip archive
directory and writing another entry, followed by a new directory.

>> in one pass, copy all non-deleted files to a new zip (which you can then
>> swap for the original zip).  Shortcutting this process puts all data in
>> your zip file at risk.
> Again, isn't this true of any substantive change to any file whatsoever?  
> Errors during write can always leave your data in an inconsistent state,
> unless your data uses a structured append format like journaled
> filesystems.  That seems like an orthogonal issue to replacing a file in
> the archive.

--Scott David Daniels
scott.daniels at

More information about the Python-list mailing list