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