#!/usr/bin/env python import os import zipfile def main(): zipper('/path/to/test', '/new/path/to/test.zip') def zipper(dir, zip_file): zip = zipfile.ZipFile(zip_file, 'w', compression=zipfile.ZIP_DEFLATED) root_len = len(os.path.abspath(dir)) for root, dirs, files in os.walk(dir): archive_root = os.path.abspath(root)[root_len:] for f in files: fullpath = os.path.join(root, f) archive_name = os.path.join(archive_root, f) print f zip.write(fullpath, archive_name, zipfile.ZIP_DEFLATED) zip.close() return zip_file if __name__ == '__main__': main()