用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 Django连接MySQL数据库做增删改查
Nov 07 Python
Python命名空间详解
Aug 18 Python
利用Python实现简单的相似图片搜索的教程
Apr 23 Python
简单介绍Python中用于求最小值的min()方法
May 15 Python
python之文件读取一行一行的方法
Jul 12 Python
Python绘制频率分布直方图的示例
Jul 08 Python
python中多个装饰器的调用顺序详解
Jul 16 Python
python sqlite的Row对象操作示例
Sep 11 Python
浅析pandas 数据结构中的DataFrame
Oct 12 Python
pytorch 实现将自己的图片数据处理成可以训练的图片类型
Jan 08 Python
DataFrame.groupby()所见的各种用法详解
Jun 14 Python
Pytorch 图像变换函数集合小结
Feb 01 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
自制短波长线天线频率预选器 - 成功消除B2K之流的镜像
2021/03/02 无线电
使用MaxMind 根据IP地址对访问者定位
2006/10/09 PHP
自定义session存储机制避免会话保持问题
2014/10/08 PHP
php简单计算页面加载时间的方法
2015/06/19 PHP
教你在PHPStorm中配置Xdebug
2015/07/27 PHP
利用PHP访问MySql数据库的逻辑操作以及增删改查的实例讲解
2017/08/30 PHP
PHP基于自定义函数实现的汉字转拼音功能实例
2017/09/30 PHP
PHP ADODB生成HTML表格函数rs2html功能【附错误处理函数用法】
2018/05/29 PHP
用JavaScript脚本实现Web页面信息交互
2006/12/21 Javascript
Jquery 实现Tab效果 思路是js思路
2010/03/02 Javascript
js/jquery获取浏览器窗口可视区域高度和宽度以及滚动条高度实现代码
2012/12/17 Javascript
常用的JavaScript验证正则表达式汇总
2013/11/26 Javascript
jquery实现右侧栏菜单选择操作
2016/03/04 Javascript
vue如何实现observer和watcher源码解析
2017/03/09 Javascript
vue+webpack实现异步加载三种用法示例详解
2018/04/24 Javascript
vue 中引用gojs绘制E-R图的方法示例
2018/08/24 Javascript
JS实现的Object数组去重功能示例【数组成员为Object对象】
2019/02/01 Javascript
layui点击弹框页面 表单请求的方法
2019/09/21 Javascript
2款Python内存检测工具介绍和使用方法
2014/06/01 Python
Python中实现结构相似的函数调用方法
2015/03/10 Python
KMP算法精解及其Python版的代码示例
2016/06/01 Python
PyQt5笔记之弹出窗口大全
2019/06/20 Python
Python调用百度根据经纬度查询地址的示例代码
2019/07/07 Python
python中bs4.BeautifulSoup的基本用法
2019/07/27 Python
Django 解决阿里云部署同步数据库报错的问题
2020/05/14 Python
如何把外网python虚拟环境迁移到内网
2020/05/18 Python
html5 Canvas绘制线条 closePath()实例代码
2012/05/10 HTML / CSS
Fanatics官网:运动服装、球衣、运动装备
2020/10/12 全球购物
涉外文秘个人求职的自我评价
2013/10/07 职场文书
建筑专业自荐信范文
2014/01/05 职场文书
工地安全标语
2014/06/07 职场文书
群众路线表态发言材料
2014/10/17 职场文书
2014财务部年度工作总结
2014/12/08 职场文书
2019大学生社会实践报告汇总
2019/08/16 职场文书
js Proxy的原理详解
2021/05/25 Javascript
Python字符串格式化方式
2022/04/07 Python