用python解压分析jar包实例


Posted in Python onJanuary 16, 2020

写这个玩意的背景:在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 相关文章推荐
python绘图库Matplotlib的安装
Jul 03 Python
Python开发之快速搭建自动回复微信公众号功能
Apr 22 Python
基于使用paramiko执行远程linux主机命令(详解)
Oct 16 Python
Python 创建空的list,以及append用法讲解
May 04 Python
用python脚本24小时刷浏览器的访问量方法
Dec 07 Python
python 绘制拟合曲线并加指定点标识的实现
Jul 10 Python
Python连接SQLite数据库并进行增册改查操作方法详解
Feb 18 Python
Python使用configparser读取ini配置文件
May 25 Python
keras 多gpu并行运行案例
Jun 10 Python
python实现猜数游戏(保存游戏记录)
Jun 22 Python
解决导入django_filters不成功问题No module named 'django_filter'
Jul 15 Python
Python制作运行进度条的实现效果(代码运行不无聊)
Feb 24 Python
Python3 实现爬取网站下所有URL方式
Jan 16 #Python
python3爬取torrent种子链接实例
Jan 16 #Python
Python 实现自动获取种子磁力链接方式
Jan 16 #Python
关于初始种子自动选取的区域生长实例(python+opencv)
Jan 16 #Python
Python简单实现区域生长方式
Jan 16 #Python
python3.8与pyinstaller冲突问题的快速解决方法
Jan 16 #Python
Pycharm中Python环境配置常见问题解析
Jan 16 #Python
You might like
PHP 遍历文件实现代码
2011/05/04 PHP
PHP使用CURL实现多线程抓取网页
2015/04/30 PHP
PHP的APC模块实现上传进度条
2015/10/27 PHP
JavaScript 数组运用实现代码
2010/04/13 Javascript
JS鼠标事件大全 推荐收藏
2011/11/01 Javascript
js之事件冒泡和事件捕获详细介绍
2013/10/28 Javascript
javascript数组操作(创建、元素删除、数组的拷贝)
2014/04/07 Javascript
JavaScript实现带有子菜单和控件的slider轮播图效果
2017/11/01 Javascript
Angular实现模版驱动表单的自定义校验功能(密码确认为例)
2018/05/17 Javascript
dts文件中删除一个node或属性的操作方法
2018/08/05 Javascript
Vuex的初探与实战小结
2018/11/26 Javascript
微信小程序里引入SVG矢量图标的方法
2019/09/20 Javascript
小程序外卖订单界面的示例代码
2019/12/30 Javascript
js实现九宫格布局效果
2020/05/28 Javascript
[44:15]DOTA2上海特级锦标赛主赛事日 - 5 败者组决赛Liquid VS EG第二局
2016/03/06 DOTA
[01:28]一分钟告诉你DOTA2 TI9不朽宝藏Ⅱ中有什么!
2019/07/09 DOTA
python 爬取微信文章
2016/01/30 Python
python用户管理系统的实例讲解
2017/12/23 Python
python调用百度语音REST API
2018/08/30 Python
Python3.5局部变量与全局变量作用域实例分析
2019/04/30 Python
简单了解python协程的相关知识
2019/08/31 Python
Windows下PyCharm2018.3.2 安装教程(图文详解)
2019/10/24 Python
sklearn-SVC实现与类参数详解
2019/12/10 Python
使用tensorflow框架在Colab上跑通猫狗识别代码
2020/04/26 Python
Pytorch - TORCH.NN.INIT 参数初始化的操作
2021/02/27 Python
如何用canvas实现在线签名的示例代码
2018/07/10 HTML / CSS
BabyBjörn婴儿背带法国官网:BabyBjorn法国
2018/06/16 全球购物
Clarks鞋澳大利亚官方网站:Clarks Australia
2019/12/25 全球购物
法国床上用品商店:La Compagnie du lit
2019/12/26 全球购物
财务人员个人求职信范文
2013/12/04 职场文书
信息专业个人的自我评价
2013/12/27 职场文书
汽车维修专业自荐书
2014/05/26 职场文书
机械设计专业大学生职业生涯规划书范文
2014/09/13 职场文书
幸福家庭事迹材料
2014/12/20 职场文书
后天观后感
2015/06/08 职场文书
公开致歉信
2019/06/24 职场文书