用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框架部署的一些建议
Apr 09 Python
浅谈python和C语言混编的几种方式(推荐)
Sep 27 Python
使用pandas模块读取csv文件和excel表格,并用matplotlib画图的方法
Jun 22 Python
Python基于多线程实现ping扫描功能示例
Jul 23 Python
python实现任意位置文件分割的实例
Dec 14 Python
浅谈python中真正关闭socket的方法
Dec 18 Python
Python 如何提高元组的可读性
Aug 26 Python
Python实现投影法分割图像示例(二)
Jan 17 Python
python 已知平行四边形三个点,求第四个点的案例
Apr 12 Python
Keras 数据增强ImageDataGenerator多输入多输出实例
Jul 03 Python
用于ETL的Python数据转换工具详解
Jul 21 Python
Python try except else使用详解
Jan 12 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/05/06 PHP
PHP定义字符串的四种方式详解
2018/02/06 PHP
跟着Jquery API学Jquery之一 选择器
2010/04/07 Javascript
jQuery实现form表单reset按钮重置清空表单功能
2012/12/18 Javascript
jquery实现手机发送验证码的倒计时代码
2014/02/12 Javascript
js的[defer]和[async]属性
2014/11/24 Javascript
一款基于jQuery的图片场景标注提示弹窗特效
2015/01/05 Javascript
jquery读取xml文件实现省市县三级联动的方法
2015/05/29 Javascript
举例讲解Node.js中的Writable对象
2015/07/29 Javascript
jquery插件autocomplete用法示例
2016/07/01 Javascript
Angular中ng-bind和ng-model的区别实例详解
2017/04/10 Javascript
基于JS实现限时抢购倒计时间表代码
2017/05/09 Javascript
文本溢出插件jquery.dotdotdot.js使用方法详解
2017/06/22 jQuery
基于vue-cli创建的项目的目录结构及说明介绍
2017/11/23 Javascript
mpvue+vuex搭建小程序详细教程(完整步骤)
2018/09/30 Javascript
layui下拉框获取下拉值(select)的例子
2019/09/10 Javascript
vue基础知识--axios合并请求和slot
2020/06/04 Javascript
Js Snowflake(雪花算法)生成随机ID的实现方法
2020/08/26 Javascript
[02:51]2018年度DOTA2最佳中单位选手-完美盛典
2018/12/17 DOTA
利用打码兔和超人打码自封装的打码类分享
2014/03/16 Python
Python常用的内置序列结构(列表、元组、字典)学习笔记
2016/07/08 Python
python+flask实现API的方法
2018/11/21 Python
解决Python中定时任务线程无法自动退出的问题
2019/02/18 Python
Python单元测试模块doctest的具体使用
2020/02/10 Python
Python提取视频中图片的示例(按帧、按秒)
2020/10/22 Python
html5唤起app的方法
2017/11/30 HTML / CSS
俄罗斯香水和化妆品在线商店:Aroma-butik
2020/02/28 全球购物
PHP面试题及答案一
2012/06/18 面试题
介绍一下SQL注入攻击的种类和防范手段
2012/02/18 面试题
艺术设计专业个人求职信
2013/09/21 职场文书
商务助理岗位职责
2013/11/13 职场文书
计算机系本科生求职信
2014/05/31 职场文书
公司户外活动总结
2014/07/04 职场文书
带刀到教室的检讨书
2014/10/04 职场文书
2014年教师德育工作总结
2014/11/10 职场文书
教师党员个人自我评价
2015/03/04 职场文书