[python] +7z批量删jar中的文件

spring cloud的项目, 一打包就是几百兆,上传太费时了
使用thin jar的方案后,每个文件都要点进去手动删/BOOT-INF/lib下的公用jar包,浪费时间和精力

7z可以直接删zip文件中的文件,支持*匹配, 递归压缩目录
7z d xxx-source.jar yyy*.conf -r
写个脚本一秒搞定,太爽了

import os
import subprocess


def remove_one_file_jars(file_name):
    subprocess.getoutput(
        f"7z d {file_name} a*.jar b*.jar c*.jar d*.jar e*.jar f*.jar g*.jar h*.jar i*.jar "
        f"j*.jar k*.jar l*.jar m*.jar n*.jar o*.jar p*.jar q*.jar r*.jar s*jar t*.jar u*.jar v*jar w*.jar x*.jar "
        f"z*.jar -r")

    dirs = subprocess.getoutput(f"7z l {file_name}")
    print(dirs) #列出zip文件目录
    xxx = dirs.split("\n")
    for i in xxx:
        if '''BOOT-INF\lib''' in i:
            jar_file = i[i.index('BOOT-INF\lib') + len('BOOT-INF\lib') + 1:]
            if len(jar_file) > 0 and 'yunjar' not in jar_file:
                xx = subprocess.getoutput(f"7z d {file_name} {jar_file} -r")
                print(xx)


if __name__ == '__main__':
    all_file = os.listdir("D:/jar")
    for one_file in all_file:
        remove_one_file_jars(one_file)

使用7z解压 springboot jar中的单个文件

尽管springboot jar的开头不是标准的zip文件, 但是7z可以跳过非zip的开头部分,直接读zip部分

7z x abc.jar  BOOT-INF/classes/template-v2.xlsx

linux中安装7z yum install epel-release; yum install p7zip p7zip-plugins

posted @ 2021-11-19 20:06  funny_coding  阅读(221)  评论(0编辑  收藏  举报
build beautiful things, share happiness