xylz,imxylz

          關注后端架構、中間件、分布式和并發編程

             :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            111 隨筆 :: 10 文章 :: 2680 評論 :: 0 Trackbacks
          9-21.

          ZIP Archive Files. Create a program that can extract files from or add files to, and perhaps creating, a ZIP archive file.

          #!/usr/bin/env python
          #
          -*- coding:utf-8 -*-
          #
          $Id: p0921.py 167 2010-06-29 06:03:11Z xylz $

          '''
          This is a 'python' study plan for xylz.
          Copyright (C)2010 xylz (www.imxylz.info)
          '''

          import zipfile
          import os

          def compress (zip_file,files):
              
          print "compress %s files to %s" % (len(files),zip_file)
              f_mode 
          = 'a' if os.path.exist(zip_file) else 'w'
              f_out 
          = zipfile.ZipFile(zip_file, f_mode) 
              in_size 
          = 0
              
          for f  in files:
                  f_out.write(f)
                  in_size 
          += os.path.getsize(f)
              f_out.close()

              out_size 
          = os.path.getsize(zip_file)
              
          print "source size %d bytes, target size %d bytes, %d%%" % (in_size,out_size,(out_size*100/in_size))
                  
          def decompress (zip_file,dstdir,files='*'):
              
          print "decompress %s  to %s" % (zip_file,dstdir)
              f_in 
          = zipfile.ZipFile(zip_file,'r')
              
          if files == '*':
                  f_in.extractall(dstdir)
              
          else:
                  
          for f in files:
                      f_in.extract(f,dstdir)
                      
          print "extract file",f
              f_in.close()

                  
                  

          if __name__ == '__main__':
              
          import sys
              
          if len(sys.argv)<4 or ('c'!= sys.argv[1and 'x'!= sys.argv[1and 'a'!= sys.argv[1]):
                  
          print "Usage: %s c <zipfile> <srcfile>.." % (sys.argv[0],)
                  
          print "Usage: %s a <zipfile> <srcfile>.." % (sys.argv[0],)
                  
          print "Usage: %s x <zipfile> <destdir> [srcfile].." % (sys.argv[0],)
                  sys.exit(0)
              zip_file 
          = sys.argv[2]
              
              
          if 'c' == sys.argv[1or 'a' == sys.argv[1]:
                  src_files 
          = []
                  
          for f in sys.argv[3:]:
                      src_files.append(f)
                  compress(zip_file,src_files)
              
              
          else:
                  dst_dir 
          = sys.argv[3]
                  files 
          = '*'
                  
          if len(sys.argv)>4:
                      files 
          = []
                      
          for f in sys.argv[4:]:
                          files.append(f)
                  decompress (zip_file,dst_dir,files)
                  
                  
              


          ©2009-2014 IMXYLZ |求賢若渴
          posted on 2010-06-29 14:05 imxylz 閱讀(16747) 評論(0)  編輯  收藏 所屬分類: Python

          ©2009-2014 IMXYLZ
          主站蜘蛛池模板: 青岛市| 海城市| 台东市| 襄樊市| 许昌县| 施秉县| 台安县| 新沂市| 道孚县| 麻江县| 白朗县| 华蓥市| 鲁甸县| 蕉岭县| 上饶县| 苍山县| 柳河县| 通化县| 错那县| 莱州市| 扎兰屯市| 宜兴市| 澄江县| 祁门县| 贵溪市| 图木舒克市| 合肥市| 区。| 凤城市| 巨野县| 同心县| 武乡县| 信阳市| 隆昌县| 高阳县| 修武县| 钟祥市| 璧山县| 江安县| 舞阳县| 金乡县|