用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 序列化 pickle/cPickle模块使用介绍
Nov 30 Python
python使用smtplib模块通过gmail实现邮件发送的方法
May 08 Python
Python双精度浮点数运算并分行显示操作示例
Jul 21 Python
Python设计模式之观察者模式简单示例
Jan 10 Python
浅谈flask截获所有访问及before/after_request修饰器
Jan 18 Python
python 将json数据提取转化为txt的方法
Oct 26 Python
python-序列解包(对可迭代元素的快速取值方法)
Aug 24 Python
Python 中 -m 的典型用法、原理解析与发展演变
Nov 11 Python
Python使用循环神经网络解决文本分类问题的方法详解
Jan 16 Python
python模式 工厂模式原理及实例详解
Feb 11 Python
Pytorch十九种损失函数的使用详解
Apr 29 Python
详解用Python调用百度地图正/逆地理编码API
Jul 02 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/17 PHP
PHP获取数组中某元素的位置及array_keys函数应用
2013/01/29 PHP
深入php之规范编程命名小结
2013/05/15 PHP
php对关联数组循环遍历的实现方法
2015/03/13 PHP
10个对初学者非常有用的PHP技巧
2016/04/06 PHP
总结一些PHP中好用但又容易忽略的小知识
2017/06/02 PHP
PHP命名空间简单用法示例
2018/12/28 PHP
js 返回时间戳所对应的具体时间
2010/07/20 Javascript
IE下写xml文件的两种方式(fso/saveAs)
2013/08/05 Javascript
Jquery 类网页微信二维码图块滚动效果具体实现
2013/10/14 Javascript
jQuery中:input选择器用法实例
2015/01/03 Javascript
jQuery中:button选择器用法实例
2015/01/04 Javascript
jQuery Form表单取值的方法
2017/01/11 Javascript
w3c编程挑战_初级脚本算法实战篇
2017/06/23 Javascript
jQuery实现定时隐藏对话框的方法分析
2018/02/12 jQuery
解决echarts的多个折现数据出现坐标和值对不上的问题
2018/12/28 Javascript
vue iview多张图片大图预览、缩放翻转
2019/07/13 Javascript
在vue-cli 3中给stylus、sass样式传入共享的全局变量
2019/08/12 Javascript
Python基于pygame实现的弹力球效果(附源码)
2015/11/11 Python
TensorFlow模型保存和提取的方法
2018/03/08 Python
用python 实现在不确定行数情况下多行输入方法
2019/01/28 Python
Python Flask框架扩展操作示例
2019/05/03 Python
详解pandas中MultiIndex和对象实际索引不一致问题
2019/07/23 Python
利用python实现短信和电话提醒功能的例子
2019/08/08 Python
Window版下在Jupyter中编写TensorFlow的环境搭建
2020/04/10 Python
音频处理 windows10下python三方库librosa安装教程
2020/06/20 Python
中国旅游网站:同程旅游
2016/09/11 全球购物
CHARLES & KEITH澳大利亚官网:新加坡时尚品牌
2019/01/22 全球购物
德国旅行、体验和活动的预订平台:Watado
2019/12/04 全球购物
.net工程师笔试题
2012/06/09 面试题
学习十八大精神心得体会
2013/12/31 职场文书
保健品市场营销方案
2014/03/31 职场文书
欢迎横幅标语
2014/06/17 职场文书
2015年感恩父亲节演讲稿
2015/03/19 职场文书
2015年物资管理工作总结
2015/05/20 职场文书
《日月潭》教学反思
2016/02/20 职场文书