posts - 319, comments - 22, trackbacks - 0, articles - 11
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理
  1 #!/usr/bin/env python
  2 # -*- coding: utf-8 -*-
  3 
  4 
  5 # Fast copy for Winodws or Linux
  6 # Copy file to
  7 
  8 import os
  9 import sys
 10 import re
 11 from optparse import OptionParser
 12 
 13 
 14 def CallFastCmd(src, dest):
 15      cmd = "XCOPY " + src +" " + dest
 16      print u"命令行"+ cmd
 17      os.system(cmd)
 18 
 19 def SplitStr(src, split):
 20      return src.split(split)
 21 
 22 
 23 
 24 def IsCanCopy(path, include, exclude):
 25     IsCan = False
 26     split = "|"
 27     if include is None:
 28         if exclude is None:
 29             IsCan = True
 30         else:
 31             for excStr in SplitStr(exclude, split):
 32                if (excStr not in path):
 33                    IsCan = True
 34     else:
 35         for incStr in SplitStr(include, split):
 36 
 37              if exclude is not None :
 38                  for excStr in SplitStr(exclude, split):
 39                      if (excStr not in path) and (incStr in path):
 40                          IsCan = True
 41              elif incStr in path:
 42                  IsCan = True
 43 
 44 
 45 
 46     #返回值
 47     return IsCan
 48 
 49 
 50 
 51 def CopyToSubDir(src, des, include, exclude, regEnable):
 52     for root,dirs,files in os.walk(des):
 53         for dirPath in dirs:
 54             subPath = os.path.join(root,dirPath) # 路径
 55             if not regEnable:
 56                if IsCanCopy(subPath, include, exclude):
 57                    CallFastCmd(src, subPath)
 58             else#使用正则表达式
 59                 incReg = include
 60                 excReg = exclude
 61 
 62                 incMatch = incReg.match(incReg, subPath)
 63                 if incMatch is not None:
 64                     excMatch = excReg.match(excReg, subPath)
 65                     if excMatch is None:
 66                         CallFastCmd(src, subPath)
 67 
 68 
 69 
 70 
 71 
 72 def Copy(src, des, include, exclude , regEnable):
 73     if not os.path.exists(des):
 74         CallFastCmd(src, des)
 75     else:
 76         CopyToSubDir(src, des, include, exclude, regEnable)
 77 
 78 
 79 
 80 def ParseCmd():
 81     parser = OptionParser()
 82     parser.add_option("-s""--src", action="store", dest="src", help="input the Dir or file")
 83     parser.add_option("-d""--des", action="store", dest="des", help="input the Dir or file")
 84     parser.add_option("-i""--include",action="store", dest="include", help="input the include string")
 85     parser.add_option("-e""--exclude",action="store", dest="exclude", help="input the exclude string")
 86     parser.add_option("-r""--regEnable",action="store_true", dest="regEnable", default=False, help="input the exclude string")
 87 
 88 
 89     (options, args) = parser.parse_args()
 90     if options.src is None:
 91         parser.error("The source is none")
 92     if options.des is None:
 93         parser.error("The dest is none")
 94 
 95     Copy(options.src, options.des, options.include, options.exclude, options.regEnable)
 96 
 97 if __name__ == "__main__":
 98     ParseCmd()
 99 
100 

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理