7.14.1 ZipFile Objects

ZipFile (filename[, mode[, compression]])
Open a ZIP file named filename. The mode parameter should be 'r' to read an existing file, 'w' to truncate and write a new file, or 'a' to append to an existing file. For mode is 'a' and filename refers to an existing ZIP file, then additional files are added to it. If filename does not refer to a ZIP file, then a new ZIP archive is appended to the file. This is meant for adding a ZIP archive to another file, such as python.exe. Using
cat myzip.zip >> python.exe
also works, and at least WinZip can read such files. compression is the ZIP compression method to use when writing the archive, and should be ZIP_STORED or ZIP_DEFLATED; unrecognized values will cause ValueError to be raised. The default is ZIP_STORED.

XXX explain the "extra" string for the ZIP format

TOC
A read-only dictionary whose keys are the names in the archive, and whose values are tuples as follows:

Index  Meaning 
0 File data seek offset
1 ZIP file "extra" data as a string
2 ZIP file bit flags
3 ZIP file compression type
4 File modification time in DOS format
5 File modification date in DOS format
6 The CRC-32 of the uncompressed data
7 The compressed size of the file
8 The uncompressed size of the file

The class ZipFile has these methods:

listdir ()
Return a list of names in the archive. Equivalent to zipfile.TOC.keys().

printdir ()
Print a table of contents for the archive to stdout.

read (name)
Return the bytes of the file in the archive. The archive must be open for read or append.

writestr (bytes, arcname, year, month, day, hour, minute, second[, extra])
Write the string bytes and the other data to the archive, and give the archive member the name arcname. extra is the ZIP extra data string. The archive must be opened with mode 'w' or 'a'.

write (filename, arcname[, extra])
Write the file named filename to the archive, giving it the archive name arcname. extra is the ZIP extra data string. The archive must be open with mode 'w' or 'a'.

writepy (pathname[, basename])
Search for files *.py and add the corresponding file to the archive. The corresponding file is a *.pyo file if available, else a *.pyc file, compiling if necessary. If the pathname is a file, the filename must end with .py, and just the (corresponding *.py[oc]) file is added at the top level (no path information). If it is a directory, and the directory is not a package directory, then all the files *.py[oc] are added at the top level. If the directory is a package directory, then all *.py[oc] are added under the package name as a file path, and if any subdirectories are package directories, all of these are added recursively. basename is intended for internal use only. The writepy() method makes archives with file names like this:

    string.pyc                                # Top level name 
    test/__init__.pyc                         # Package directory 
    test/testall.pyc                          # Module test.testall
    test/bogus/__init__.pyc                   # Subpackage directory 
    test/bogus/myfile.pyc                     # Submodule test.bogus.myfile

close ()
Close the archive file. You must call close() before exiting your program or essential records will not be written.

See About this document... for information on suggesting changes.