1. 程式人生 > 其它 >[python] +7z批量刪jar中的檔案

[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)
@@@build beautiful things, share happiness@@@