初学python,在项目中有时使用的是php,在升级的时候,由于是增量提交升级,每次都需要把要升级的文件按照相应文件夹方式放好,在线上直接覆盖整个文件夹就可以完成升级。
这种情况,每次都需要把文件夹建立好,实在是很麻烦,就写了一段python程序来拷贝生成修改过的程序到新的文件夹,稍微减化一下工作。
import os import shutil def copyFiles(srcDir, destDir): for file in os.listdir(srcDir): sourceFile = os.path.join(srcDir, file) destFile = os.path.join(destDir, file) if os.path.isfile(sourceFile): if not os.path.exists(destDir): os.makedirs(destDir) shutil.copyfile(sourceFile, destFile) if os.path.isdir(sourceFile): copyFiles(sourceFile, destFile) # parent_path = "z:/works/your_directory/" #这里是需要手工添加的需要升级的文件 paths = """xxx/yyy/zzzz/my1.php xxx/yyy/my2.php""" #将paths按\n分割,并去除前后空格,建立目录 for path in paths.split("\n"): path = path.strip('\t') to_mk = os.path.dirname(path) #print to_mk if not os.path.isdir(to_mk): os.makedirs(to_mk) for path in paths.split("\n"): path = path.strip('\t') src = parent_path + path #文件直接复制 if os.path.isdir(src): copyFiles(src,path) #文件夹就递归复制 elif os.path.isfile(src): shutil.copyfile(src,path)
因为真正开始需要覆盖的目录是从xxx开始的,所以把父目录提取出来了,生成的结构也就是paths中定义的那样,直接覆盖线上。
不过这个实现上比较简单,接下来的想法是想做成图形界面对于需要升级的文件打上勾就可以了,或是通过与git交互把需要升级的文件放到新文件夹中。