python合并升级包

在这里插入图片描述

碰到奇怪的事,升级包竟然需要自己先合并再去升级,没办法了,人不能被尿憋死,写个脚本呗。

# -*- 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 路径。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值