+++ /dev/null
-#!/usr/bin/env python\r
-\r
-# Takes an optional filename, defaulting to this file itself.\r
-# Reads the file and compresses the content using level 1 and level 9\r
-# compression, printing a summary of the results.\r
-\r
-import zlib, sys\r
-\r
-def main():\r
- if len(sys.argv) > 1:\r
- filename = sys.argv[1]\r
- else:\r
- filename = sys.argv[0]\r
- print 'Reading', filename\r
-\r
- f = open(filename, 'rb') # Get the data to compress\r
- s = f.read()\r
- f.close()\r
-\r
- # First, we'll compress the string in one step\r
- comptext = zlib.compress(s, 1)\r
- decomp = zlib.decompress(comptext)\r
-\r
- print '1-step compression: (level 1)'\r
- print ' Original:', len(s), 'Compressed:', len(comptext),\r
- print 'Uncompressed:', len(decomp)\r
-\r
- # Now, let's compress the string in stages; set chunk to work in smaller steps\r
-\r
- chunk = 256\r
- compressor = zlib.compressobj(9)\r
- decompressor = zlib.decompressobj()\r
- comptext = decomp = ''\r
- for i in range(0, len(s), chunk):\r
- comptext = comptext+compressor.compress(s[i:i+chunk])\r
- # Don't forget to call flush()!!\r
- comptext = comptext + compressor.flush()\r
-\r
- for i in range(0, len(comptext), chunk):\r
- decomp = decomp + decompressor.decompress(comptext[i:i+chunk])\r
- decomp=decomp+decompressor.flush()\r
-\r
- print 'Progressive compression (level 9):'\r
- print ' Original:', len(s), 'Compressed:', len(comptext),\r
- print 'Uncompressed:', len(decomp)\r
-\r
-if __name__ == '__main__':\r
- main()\r