用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的框架下的web app的详细教程
Apr 30 Python
python rsa 加密解密
Mar 20 Python
Python设计模式之策略模式实例详解
Jan 21 Python
django formset实现数据表的批量操作的示例代码
Dec 06 Python
python3中pip3安装出错,找不到SSL的解决方式
Dec 12 Python
使用pyqt5 tablewidget 单元格设置正则表达式
Dec 13 Python
Python爬虫爬取煎蛋网图片代码实例
Dec 16 Python
python pandas移动窗口函数rolling的用法
Feb 29 Python
浅谈Django QuerySet对象(模型.objects)的常用方法
Mar 28 Python
基于python代码批量处理图片resize
Jun 04 Python
Keras实现DenseNet结构操作
Jul 06 Python
django inspectdb 操作已有数据库数据的使用步骤
Feb 07 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缓存技术详细总结
2013/08/07 PHP
使用PHP备份MYSQL数据的多种方法
2014/01/15 PHP
PHP程序漏洞产生的原因分析与防范方法说明
2014/03/06 PHP
PHP连接MSSQL2008/2005数据库(SQLSRV)配置实例
2014/10/22 PHP
php+jQuery+Ajax实现点赞效果的方法(附源码下载)
2020/07/21 PHP
PHP实现截取中文字符串不出现?号的解决方法
2016/12/29 PHP
Laravel框架实现多数据库连接操作详解
2019/07/12 PHP
PHP字符串和十六进制如何实现互相转换
2020/07/16 PHP
基于JQuery的日期联动实现代码
2011/02/24 Javascript
JS 控件事件小结
2012/10/31 Javascript
原生Js实现元素渐隐/渐现(原理为修改元素的css透明度)
2013/06/24 Javascript
javascript页面上使用动态时间具体实现
2014/03/18 Javascript
jQuery中removeAttr()方法用法实例
2015/01/05 Javascript
js获取元素外链样式的方法
2015/01/27 Javascript
JavaScript中对象的不同创建方法
2016/08/12 Javascript
Angular使用过滤器uppercase/lowercase实现字母大小写转换功能示例
2018/03/27 Javascript
快速解决Vue项目在IE浏览器中显示空白的问题
2018/09/04 Javascript
微信小程序开发之点击按钮退出小程序的实现方法
2019/04/26 Javascript
JavaScript使用百度ECharts插件绘制饼图操作示例
2019/11/26 Javascript
Python 实现网页自动截图的示例讲解
2018/05/17 Python
Python实现的大数据分析操作系统日志功能示例
2019/02/11 Python
pytorch中如何使用DataLoader对数据集进行批处理的方法
2019/08/06 Python
python3 xpath和requests应用详解
2020/03/06 Python
美国著名的婴儿学步鞋老品牌:Robeez
2016/08/20 全球购物
日本最大的药妆连锁店:Matsukiyo松本清药妆店
2017/11/23 全球购物
小米乌克兰网上商店:Xiaomi.UA
2019/10/29 全球购物
医学生自荐信
2013/12/03 职场文书
财务支持类个人的自我评价
2014/02/14 职场文书
中文专业自荐书
2014/06/29 职场文书
2014年工程工作总结
2014/11/25 职场文书
导游欢送词
2015/01/31 职场文书
校长师德表现自我评价
2015/03/04 职场文书
物业保安辞职信
2015/05/12 职场文书
游戏开发中如何使用CocosCreator进行音效处理
2021/04/14 Javascript
python入门之算法学习
2021/04/22 Python
如何用JavaScript学习算法复杂度
2021/04/30 Javascript