xylz,imxylz

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

             :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            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
          主站蜘蛛池模板: 格尔木市| 嵩明县| 奉节县| 玉环县| 梅河口市| 金坛市| 济宁市| 安龙县| 呼和浩特市| 南丰县| 邹城市| 峨眉山市| 旬邑县| 巴林右旗| 厦门市| 民县| 苏州市| 兴安盟| 循化| 桃园市| 綦江县| 韶关市| 万年县| 承德市| 米易县| 宜州市| 专栏| 博兴县| 宣威市| 徐水县| 大渡口区| 潜山县| 砚山县| 花莲县| 威海市| 永州市| 麻阳| 二连浩特市| 吴堡县| 宁晋县| 龙口市|