刚学python没多久,需要在实际应用中体验一把python的便捷。最近做项目是在原项目基础上修改的,所以给客户上线时候只需要把改过的class文件、jsp文件和配置文件更新进去。因为昨天已经从版本控制中一个文件一个文件对比出来找出了修改过的java文件,对应找出了需要更新的class。但是今天又在这几个文件中有所修改,不想再对照版本控制找出修改的文件,所以写了以下代码帮我完成这个功能。
SOURCE_PATH1 是昨天已经挑好的文件目录。(其实该目录只是提供了要从SOURCE_PATH2中复制的文件名) SOURCE_PATH2 是本机最新的部署文件目录。 DEST_PATH 是要生成的新文件的目录。
初次写python,难免不好,至少功能实现了。^_^
- # -*- coding: cp936 -*-
- import os
- import shutil
- import sys
- SOURCE_PATH1=r'E:\Work\CMCC_KF\cmcc_service';#比对目录,提供文件名
- SOURCE_PATH2=r'D:\apache-tomcat-6.0.29\webapps\cmcc_service';#要复制出来的目录
- DEST_PATH=r'E:\new'#目标目录
- def ReadFileNames(rootDir):
- FileList = []
- for parent,dirNames,fileNames in os.walk(rootDir):
- if fileNames:
- for fileName in fileNames:
- FileList.append(os.path.join(parent,fileName))
- return FileList
- #main()
- if __name__=='__main__':
- SOURCE_PATH1 = sys.argv[1]
- SOURCE_PATH2= sys.argv[2]
- DEST_PATH= sys.argv[3]
- if not os.path.exists(DEST_PATH):
- os.makedirs(DEST_PATH)
- fileList = ReadFileNames(SOURCE_PATH1)
- for oldfileName in fileList:
- newfileName = oldfileName.replace(SOURCE_PATH1, SOURCE_PATH2)
- destfileName = oldfileName.replace(SOURCE_PATH1, DEST_PATH)
- destdirName = os.path.dirname(destfileName)
- if not os.path.exists(destdirName):
- os.makedirs(destdirName)
- shutil.copyfile(newfileName,destfileName)
- print 'copy',newfileName,'-->',destfileName