碰到奇怪的事,升级包竟然需要自己先合并再去升级,没办法了,人不能被尿憋死,写个脚本呗。
# -*- coding: utf-8 -*-
__author__ = 'yangwenren'
import sys
import os
import time
import shutil
import datetime
reload(sys)
sys.setdefaultencoding('utf8')
# 今天日期的字符串
today_str = datetime.datetime.today().strftime("%Y%m%d")
# 当前工作目录
project_path = os.getcwd()
# 拷贝目录
source_path = ur"D:\20181130升级\Opt1.0.4.5_upd006(R)~Opt1.0.4.5_upd009(R)_升级包"
# 合并后存放目录
dst_path = os.path.join(".", today_str)
# 初始化一些环境
def init():
# 初始化日志目录
if not os.path.exists(dst_path):
os.makedirs(dst_path)
# 合包kcbp_risk
def merge_krisk(souce, dst):
# kcbp_risk升级包合并
dst_krisk = os.path.join(dst, "kcbp_risk")
if not os.path.exists(dst_krisk):
os.makedirs(dst_krisk)
# 先把升级包版本排序,保证是新版本覆盖旧版本
update_version_root_dict = {}
for dir in os.listdir(souce):
key = int(dir.split(".")[0]),
update_version_root_dict[key] = os.path.join(souce, dir)
keys = update_version_root_dict.keys()
keys.sort()
for key in keys:
# 已排序,从旧版本开始合并
update_version_root = update_version_root_dict[key]
update_version_root_krisk = os.path.join(update_version_root, r"krisk\kcbp")
for root, dirs, files in os.walk(update_version_root_krisk):
for f in files:
# 升级文件
update_file = os.path.join(root, f)
# 其目录,需要在拷贝前新建
dir = update_file.split(r"krisk\kcbp")[1].replace(f,"")
dst_dir = dst_krisk + dir
if not os.path.exists(dst_dir):
os.makedirs(dst_dir)
# 复制升级文件,如果存在就会覆盖
dst_file = dst_dir + f
shutil.copy(update_file, dst_file)
# 主函数
if __name__ =="__main__":
# 初始化一些环境
init()
# 合并kcbp_risk
merge_krisk(source_path, dst_path)
print "End Task......"
#time.sleep(300)
shutil.copy(src, dst)
复制文件 src 到 dst 文件或文件夹中。 如果 dst 是文件夹, 则会在文件夹中创建或覆盖一个文件,且该文件与 src 的文件名相同。 文件权限位会被复制。使用字符串指定src 和 dst 路径。