Zippping a directory recursively from Python script on Windows

Mike C. Fletcher mcfletch at rogers.com
Wed Mar 10 08:00:54 EST 2004


Max M wrote:
...

> Can it really be that there is no free .zip command line tool for 
> Windows, or are my Googling skills just to poor?

I believe InfoZip is a free command-line zip/unzip utility, but I may be 
wrong about that, I normally use cygwin tar & gzip.

> Or is there a more Pythonic approach?

Honestly, I wouldn't do this myself, I just tell everyone to get tar and 
gzip, but here's a simple example of using ZipFile for creating zips of 
directories.  You'd want to check for .jpg, .mpg, etceteras and avoid 
compressing those most likely, but the basics are there.

HTH,
Mike

import zipfile, os

def toZip( directory, zipFile ):
    """Sample for storing directory to a ZipFile"""
    z = zipfile.ZipFile(
        zipFile, 'w', compression=zipfile.ZIP_DEFLATED
    )
    def walker( zip, directory, files, root=directory ):
        for file in files:
            file = os.path.join( directory, file )
            # yes, the +1 is hacky...
            archiveName = file[len(os.path.commonprefix( (root, file) ))+1:]
            zip.write( file, archiveName, zipfile.ZIP_DEFLATED )
            print file
    os.path.walk( directory, walker, z  )
    z.close()
    return zipFile


if __name__ == "__main__":
    toZip( 'v:\\temp', 'c:\\temp\\test.zip' )

_______________________________________
  Mike C. Fletcher
  Designer, VR Plumber, Coder
  http://members.rogers.com/mcfletch/






More information about the Python-list mailing list