用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 urllib爬取百度云连接的实例代码
Jun 19 Python
神经网络相关之基础概念的讲解
Dec 29 Python
Python字符串的全排列算法实例详解
Jan 07 Python
Python+pyplot绘制带文本标注的柱状图方法
Jul 08 Python
手把手教你Python yLab的绘制折线图的画法
Oct 23 Python
tensorflow estimator 使用hook实现finetune方式
Jan 21 Python
python异常处理、自定义异常、断言原理与用法分析
Mar 23 Python
Django import export实现数据库导入导出方式
Apr 03 Python
怎么解决pycharm license Acti的方法
Oct 28 Python
golang中的空接口使用详解
Mar 30 Python
Python一行代码实现自动发邮件功能
May 30 Python
DjangoRestFramework 使用 simpleJWT 登陆认证完整记录
Jun 22 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知识收集
2012/08/20 PHP
微信公众平台开发教程⑥ 微信开发集成类的使用图文详解
2019/04/10 PHP
php获取目录下所有文件及目录(多种方法)(推荐)
2019/05/14 PHP
JavaScript XML实现两级级联下拉列表
2008/11/10 Javascript
70+漂亮且极具亲和力的导航菜单设计国外网站推荐
2011/09/20 Javascript
JS获取并操作iframe中元素的方法
2013/03/21 Javascript
JavaScript解析URL参数示例代码
2013/08/12 Javascript
sencha touch 模仿tabpanel导航栏TabBar的实例代码
2013/10/24 Javascript
理解JavaScript事件对象
2016/01/25 Javascript
基于BootStrap Metronic开发框架经验小结【七】数据的导入、导出及附件的查看处理
2016/05/12 Javascript
DOM中事件处理概览与原理的全面解析
2016/08/16 Javascript
jQuery实现获取元素索引值index的方法
2016/09/18 Javascript
如何清除IE10+ input X 文本框的叉叉和密码输入框的眼睛图标
2016/12/21 Javascript
jQuery实现花式轮播之圣诞节礼物传送效果
2016/12/25 Javascript
原生js实现无限循环轮播图效果
2017/01/20 Javascript
Angular模板表单校验方法详解
2017/08/11 Javascript
深入理解Angular4订阅(Subscribe)与取消
2017/11/22 Javascript
vue中实现在外部调用methods的方法(推荐)
2018/02/08 Javascript
JavaScript实现浅拷贝与深拷贝的方法分析
2018/07/05 Javascript
Vue.Draggable拖拽功能的配置使用方法
2020/07/29 Javascript
基于node简单实现RSA加解密的方法步骤
2019/03/21 Javascript
微信小程序引入模块中wxml、wxss、js的方法示例
2019/08/09 Javascript
JS阻止事件冒泡的方法详解
2019/08/26 Javascript
对Layer UI 模块化的用法详解
2019/09/26 Javascript
JS removeAttribute()方法实现删除元素的某个属性
2021/01/11 Javascript
[43:32]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS NewBee第一场
2014/05/26 DOTA
[46:58]完美世界DOTA2联赛PWL S3 Forest vs LBZS 第一场 12.17
2020/12/19 DOTA
python 快速把超大txt文件转存为csv的实例
2018/10/26 Python
深入CSS3 动画效果的总结详解
2013/05/09 HTML / CSS
总经理任命书
2014/03/29 职场文书
法制教育观后感
2015/06/17 职场文书
2015年秋季开学典礼校长致辞
2015/07/16 职场文书
创业计划书之美容店
2019/09/16 职场文书
python实现简单区块链结构
2021/04/25 Python
MySQL如何构建数据表索引
2021/05/13 MySQL
pytorch实现手写数字图片识别
2021/05/20 Python