python

超轻量级php框架startmvc

用python解压分析jar包实例

更新时间:2020-08-21 11:36:01 作者:startmvc
写这个玩意的背景:在u8多渠道打包里,需要分析jar包,并把里面的文件按目录和类型分别

写这个玩意的背景:在u8多渠道打包里,需要分析jar包,并把里面的文件按目录和类型分别放在root和assets文件夹里,之前师兄都是手动解压,一个一个文件夹找文件,效率比较低,刚好最近手上的android项目已经做完了,就决定写一个自动化分析jar文件并复制粘贴到指定文件夹的脚本。


# -*- coding: utf-8 -*-
import os
import shutil
import zipfile
 
count = 1
def getSumDir():
 sumfilelist = os.listdir(os.getcwd())
 for dir in sumfilelist:
 if ".idea" not in dir:
 classify(dir)
 
 
def getlibDir():
 sumfilelist = os.listdir(os.getcwd())
 for dir in sumfilelist:
 if "libs" in dir:
 jieyajar(dir)
 
 
def jieyajar(dir):
 files = os.listdir(dir)
 for jars in files:
 if "jar" in jars:
 zfile = zipfile.ZipFile('libs/' + jars, 'r')
 if not os.path.exists(os.getcwd() + '/jarlog/' + jars):
 os.makedirs(os.getcwd() + '/jarlog/' + jars)
 zfile.extractall(os.getcwd() + '/jarlog/' + jars)
 
 if not os.path.exists(os.getcwd() + '/jars/'):
 os.makedirs(os.getcwd() + '/jars/')
 zfile.extractall(os.getcwd() + '/jars/')
 zfile.close
 
 for file in os.listdir(os.getcwd()):
 if "jars" in file:
 classify(file)
 
 
# def classify(path):
# if os.path.isfile(path):
# if ".class" not in path:
# if "assets" in os.path.dirname(path):
# if not os.path.exists(os.path.dirname(os.getcwd()) + '/assets/' + os.path.dirname(path)):
# os.makedirs(os.path.dirname(os.getcwd()) + '/assets/' + os.path.dirname(path))
# shutil.copy(path, os.path.dirname(os.getcwd()) + '/assets/' + os.path.dirname(path))
# else:
# if not os.path.exists(os.path.dirname(os.getcwd())+'/root/'+os.path.dirname(path)):
# os.makedirs(os.path.dirname(os.getcwd())+'/root/'+os.path.dirname(path))
# shutil.copy(path,os.path.dirname(os.getcwd())+'/root/'+os.path.dirname(path))
# else :
# list = os.listdir(path)
# for dir in list:
# classify(path+"/"+dir)
 
def classify(path):
 global count
 if os.path.isfile(path):
 if ".class" not in path:
 if not os.path.exists(os.getcwd() + '/root/' + os.path.dirname(path)):
 os.makedirs(os.getcwd() + '/root/' + os.path.dirname(path))
 shutil.copy(path, os.getcwd() + '/root/' + os.path.dirname(path))
 else:
 if 'assets' in path and count == 1:
 count = count + 1
 shutil.copytree(os.getcwd()+'/'+path, os.getcwd() + '/assets')
 elif 'META-INF' not in path:
 list = os.listdir(path)
 for dir in list:
 classify(path + "/" + dir)
 
 
# getSumDir()
getlibDir()

嗯,主要就是对文件夹和文件的操作。。

以上这篇用python解压分析jar包实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

python 解压 jar包