用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定时杀进程
Jun 06 Python
总结python实现父类调用两种方法的不同
Jan 15 Python
Linux RedHat下安装Python2.7开发环境
May 20 Python
Python中音频处理库pydub的使用教程
Jun 07 Python
对Python 数组的切片操作详解
Jul 02 Python
python自定义函数实现最大值的输出方法
Jul 09 Python
Python3.x+迅雷x 自动下载高分电影的实现方法
Jan 12 Python
tensorflow 实现数据类型转换
Feb 17 Python
Python执行时间的几种计算方法
Jul 31 Python
用Python制作mini翻译器的实现示例
Aug 17 Python
13个Pandas实用技巧,助你提高开发效率
Aug 19 Python
Python中使用Selenium环境安装的方法步骤
Feb 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中文本数据翻页(留言本翻页)
2006/10/09 PHP
php数组去重的函数代码
2013/02/03 PHP
PHP获取MSN好友列表类的实现代码
2013/06/23 PHP
TP3.2批量上传文件或图片 同名冲突问题的解决方法
2017/08/01 PHP
Laravel框架用户登陆身份验证实现方法详解
2017/09/14 PHP
jquery插件jbox使用iframe关闭问题
2009/02/09 Javascript
能说明你的Javascript技术很烂的五个原因分析
2011/10/28 Javascript
一个简单的Ext.XTemplate的实例代码
2012/03/18 Javascript
JS父页面与子页面相互传值方法
2014/03/05 Javascript
在浏览器中实现图片粘贴的jQuery插件-- pasteimg使用指南
2014/12/29 Javascript
javascript实现倒计时(精确到秒)
2015/06/26 Javascript
使用PBFunc在Powerbuilder中支付宝当面付款功能
2016/10/01 Javascript
JS滚动到指定位置导航栏固定顶部
2017/07/03 Javascript
Angular中管道操作符(|)的使用方法
2017/12/15 Javascript
微信小程序实现左右联动的实战记录
2018/07/05 Javascript
原生JS实现DOM加载完成马上执行JS代码的方法
2018/09/07 Javascript
灵活使用console让js调试更简单的方法步骤
2019/04/23 Javascript
python连接mysql调用存储过程示例
2014/03/05 Python
Tornado服务器中绑定域名、虚拟主机的方法
2014/08/22 Python
Python读取txt某几列绘图的方法
2018/10/14 Python
selenium在执行phantomjs的API并获取执行结果的方法
2018/12/17 Python
对python pandas读取剪贴板内容的方法详解
2019/01/24 Python
Python实现的列表排序、反转操作示例
2019/03/13 Python
python3 enum模块的应用实例详解
2019/08/12 Python
浅谈ROC曲线的最佳阈值如何选取
2020/02/28 Python
简单的Python人脸识别系统
2020/07/14 Python
使用CSS3制作版头动画效果
2020/12/24 HTML / CSS
英国潮流网站:END.(全球免邮)
2017/01/16 全球购物
英国计算机产品零售商:Novatech(定制个人电脑、笔记本电脑、工作站和服务器)
2018/01/28 全球购物
俄罗斯宠物用品网上商店:ZooMag
2019/12/12 全球购物
如何利用cmp命令比较文件
2013/09/23 面试题
大学生毕业自我评价范文分享
2013/11/07 职场文书
网络管理专业求职信
2014/03/15 职场文书
2014年领导班子工作总结
2014/12/11 职场文书
辞职信如何写
2015/02/27 职场文书
CSS实现单选折叠菜单功能
2021/11/01 HTML / CSS