简单的Copy文件到多个目录,可以指定,支持正则表达式

  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 

你可能感兴趣的:(简单的Copy文件到多个目录,可以指定,支持正则表达式)