用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 相关文章推荐
安装dbus-python的简要教程
May 05 Python
python去除空格和换行符的实现方法(推荐)
Jan 04 Python
Python排序搜索基本算法之插入排序实例分析
Dec 11 Python
python最小生成树kruskal与prim算法详解
Jan 17 Python
python适合人工智能的理由和优势
Jun 28 Python
python按修改时间顺序排列文件的实例代码
Jul 25 Python
python爬取本站电子书信息并入库的实现代码
Jan 20 Python
利用python中集合的唯一性实现去重
Feb 11 Python
Python栈的实现方法示例【列表、单链表】
Feb 22 Python
解决pycharm下pyuic工具使用的问题
Apr 08 Python
如何实现一个python函数装饰器(Decorator)
Oct 12 Python
如何使用flask将模型部署为服务
May 13 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
模仿OSO的论坛(四)
2006/10/09 PHP
php 生成饼图 三维饼图
2009/09/28 PHP
php上传中文文件名乱码问题处理方案
2015/02/03 PHP
浅谈php自定义错误日志
2015/02/13 PHP
使用jQuery实现的网页版的个人简历(可换肤)
2013/04/19 Javascript
jQuery获取CSS样式中的颜色值的问题,不同浏览器格式不同的解决办法
2013/05/13 Javascript
jquery实现按Enter键触发事件示例
2013/09/10 Javascript
javascript中parseInt()函数的定义和用法分析
2014/12/20 Javascript
jQuery实现鼠标悬停背景翻转的黑色导航菜单代码
2015/09/14 Javascript
jQuery Easyui Datagrid实现单行的上移下移及保存移动的结果
2016/08/15 Javascript
原生js实现无限循环轮播图效果
2017/01/20 Javascript
Angular项目从新建、打包到nginx部署全过程记录
2017/12/09 Javascript
详解Vue 事件修饰符capture 的使用
2017/12/29 Javascript
jQuery实现form表单序列化转换为json对象功能示例
2018/05/23 jQuery
解决vue net :ERR_CONNECTION_REFUSED报错问题
2020/08/13 Javascript
[01:42]DOTA2 – 虚无之灵
2019/08/25 DOTA
Android应用开发中Action bar编写的入门教程
2016/02/26 Python
Python的collections模块中的OrderedDict有序字典
2016/07/07 Python
Python创建二维数组实例(关于list的一个小坑)
2017/11/07 Python
Python+树莓派+YOLO打造一款人工智能照相机
2018/01/02 Python
python距离测量的方法
2018/03/06 Python
python 字典中取值的两种方法小结
2018/08/02 Python
Python中collections模块的基本使用教程
2018/12/07 Python
Python OpenCV调用摄像头检测人脸并截图
2020/08/20 Python
Python使用字典实现的简单记事本功能示例
2019/08/15 Python
英国网上购买肉类网站:Great British Meat
2018/10/17 全球购物
护理自荐信
2013/10/22 职场文书
校园奶茶店创业计划书
2014/01/23 职场文书
关于旷工的检讨书
2014/02/02 职场文书
物理系毕业生自荐书
2014/06/13 职场文书
2014年秋季开学寄语
2014/08/02 职场文书
车贷收入证明范本
2014/09/14 职场文书
幼儿园家长工作总结2015
2015/04/25 职场文书
国情备忘录观后感
2015/06/04 职场文书
python游戏开发Pygame框架
2022/04/22 Python
Windows Server 2019 安装DHCP服务及相关配置
2022/04/28 Servers