用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中使用select模块实现非阻塞的IO
Feb 03 Python
Python的Bottle框架的一些使用技巧介绍
Apr 08 Python
Python中with及contextlib的用法详解
Jun 08 Python
pyspark操作MongoDB的方法步骤
Jan 04 Python
python实现转盘效果 python实现轮盘抽奖游戏
Jan 22 Python
我就是这样学习Python中的列表
Jun 02 Python
PyQt5 QListWidget选择多项并返回的实例
Jun 17 Python
Django中间件拦截未登录url实例详解
Sep 03 Python
详解基于python-django框架的支付宝支付案例
Sep 23 Python
安装python及pycharm的教程图解
Oct 10 Python
python GUI库图形界面开发之PyQt5中QWebEngineView内嵌网页与Python的数据交互传参详细方法实例
Feb 26 Python
Python+uiautomator2实现自动刷抖音视频功能
Apr 29 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 作用域解析运算符(::)
2010/07/27 PHP
PHP实现中国公民身份证号码有效性验证示例代码
2017/05/03 PHP
jQuery 加上最后自己的验证
2009/11/04 Javascript
一个js拖拽的效果类和dom-drag.js浅析
2010/07/17 Javascript
Jquery加载时从后台读取数据绑定到dropdownList实例
2013/06/09 Javascript
js输出阴历、阳历、年份、月份、周示例代码
2014/01/29 Javascript
mvvm双向绑定机制的原理和实现代码(推荐)
2016/06/07 Javascript
AngularJS入门教程之AngularJS 模板
2016/08/18 Javascript
jQuery实现简洁的轮播图效果实例
2016/09/07 Javascript
详解JS中的attribute属性
2017/04/25 Javascript
详解vue.js+UEditor集成 [前后端分离项目]
2017/07/07 Javascript
Vue.js 单页面多路由区域操作的实例详解
2017/07/17 Javascript
node.js读取Excel数据(下载图片)的方法示例
2018/08/02 Javascript
layui-laydate时间日历控件使用方法详解
2018/11/15 Javascript
微信小程序实现授权登录
2019/05/15 Javascript
python实现简单中文词频统计示例
2017/11/08 Python
分析Python读取文件时的路径问题
2018/02/11 Python
对numpy中array和asarray的区别详解
2018/04/17 Python
使用Python画出小人发射爱心的代码
2019/11/23 Python
Pyspark读取parquet数据过程解析
2020/03/27 Python
Python内存映射文件读写方式
2020/04/24 Python
python中的yield from语法快速学习
2020/11/06 Python
CSS3 :nth-child()伪类选择器实现奇偶行显示不同样式
2013/11/05 HTML / CSS
地理科学专业毕业生求职信
2013/10/15 职场文书
质量工程师岗位职责
2013/11/16 职场文书
毕业生的自我评价分享
2013/12/18 职场文书
业绩考核岗位职责
2014/02/01 职场文书
传播学专业毕业生自荐书
2014/07/01 职场文书
抗洪救灾标语
2014/10/08 职场文书
2014会计年终工作总结
2014/12/20 职场文书
2015年技术员工作总结
2015/04/10 职场文书
2015年挂职锻炼个人总结
2015/10/22 职场文书
写给医护人员的一封感谢信
2019/09/16 职场文书
元素水平垂直居中的方式
2021/03/31 HTML / CSS
python3实现无权最短路径的方法
2021/05/12 Python
PyQt5实现多张图片显示并滚动
2021/06/11 Python