xylz,imxylz

          關(guān)注后端架構(gòu)、中間件、分布式和并發(fā)編程

             :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            111 隨筆 :: 10 文章 :: 2680 評(píng)論 :: 0 Trackbacks
          9-20.

          Compressed Files. Write a short piece of code that will compress and decompress gzipped or bzipped files. Confirm your solution works by using the command-line gzip or bzip2 programs or a GUI program like PowerArchiver, StuffIt, and/or WinZip.

           1#!/usr/bin/env python
           2#-*- coding:utf-8 -*-
           3#$Id: p0920.py 166 2010-06-29 03:46:56Z xylz $
           4
           5'''
           6This is a 'python' study plan for xylz.
           7Copyright (C)2010 xylz (www.imxylz.info)
           8'''
           9
          10import gzip
          11import os
          12
          13def compress (dst,f):
          14    print "compress %s to %s" % (f,dst)
          15    f_out = gzip.open(dst,'wb')
          16    f_in = open(f,'rb')
          17    f_out.writelines(f_in)
          18    f_in.close()
          19    f_out.close()
          20    in_size = os.path.getsize(f)
          21    out_size = os.path.getsize(dst)
          22    print "source size %d bytes, target size %d bytes, %d%%" % (in_size,out_size,(out_size*100/in_size))
          23        
          24def decompress (f,dst):
          25    print "decompress %s to %s" % (f,dst)
          26    f_in = gzip.open(f,'rb')
          27    f_out = open(dst,'wb')
          28    f_out.writelines(f_in)
          29    f_in.close()
          30    f_out.close()
          31    in_size = os.path.getsize(f)
          32    out_size = os.path.getsize(dst)
          33    print "source size %d bytes, target size %d bytes, %d%%" % (in_size,out_size,(in_size*100/out_size))
          34    
          35
          36if __name__ == '__main__':
          37    import sys
          38    if len(sys.argv)<3 or ('c'!= sys.argv[1and 'x'!= sys.argv[1]):
          39        print "Usage: %s <c|x> <file> [destfile]" % (sys.argv[0],)
          40        sys.exit(0)
          41    src_file = sys.argv[2]
          42    dest_file = None
          43    if len(sys.argv)>3:
          44        dest_file = sys.argv[3]
          45    
          46
          47    if 'c' == sys.argv[1]:
          48        if not dest_file:
          49            dest_file = src_file+".gz"
          50        compress(dest_file,src_file)
          51    
          52    else:
          53        if not dest_file:
          54            dest_file = src_file[:src_file.index('.gz')] #raise exception if file error
          55        decompress(src_file,dest_file)
          56        
          57        
          58    
          59
          下面是一次執(zhí)行的輸出結(jié)果:
          C:\Users\xylz\Desktop\core_python>python p0920.py
          Usage: p0920.py <c|x> <file> 
          [destfile]

          C:\Users\xylz\Desktop\core_python>python p0920.py c p0920.py
          compress p0920.py to p0920.py.gz
          source size 
          1587 bytes, target size 614 bytes, 38%

          C:\Users\xylz\Desktop\core_python>python p0920.py x p0920.py.gz p0920.py
          .2
          decompress p0920.py.gz to p0920.py
          .2
          source size 
          614 bytes, target size 1587 bytes, 38%

          C:\Users\xylz\Desktop\core_python>md5sum p0920.py p0920.py
          .2
          3383e1a05fbede400dd016feed8a55bf *p0920.py
          3383e1a05fbede400dd016feed8a55bf *p0920.py
          .2


          ©2009-2014 IMXYLZ |求賢若渴
          posted on 2010-06-29 11:51 imxylz 閱讀(16707) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): Python

          ©2009-2014 IMXYLZ
          主站蜘蛛池模板: 冕宁县| 河南省| 天津市| 凤山县| 巴楚县| 日土县| 佛教| 望城县| 墨竹工卡县| 富顺县| 乌兰察布市| 宝清县| 武义县| 桂阳县| 元氏县| 阿鲁科尔沁旗| 桓台县| 临邑县| 襄樊市| 阆中市| 疏勒县| 杭锦旗| 霸州市| 健康| 湖口县| 胶南市| 太仆寺旗| 平阴县| 乐亭县| 丰城市| 韩城市| 白山市| 平远县| 沈丘县| 西和县| 绥棱县| 宁都县| 蚌埠市| 都江堰市| 湄潭县| 宁明县|