用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搭建简易服务器分析与实现
Dec 15 Python
Python和Ruby中each循环引用变量问题(一个隐秘BUG?)
Jun 04 Python
浅析Python编写函数装饰器
Mar 18 Python
Python通过调用有道翻译api实现翻译功能示例
Jul 19 Python
Python OpenCV 使用滑动条来调整函数参数的方法
Jul 08 Python
Django使用Channels实现WebSocket的方法
Jul 28 Python
python:目标检测模型预测准确度计算方式(基于IoU)
Jan 18 Python
Python用input输入列表的实例代码
Feb 07 Python
Python开发之身份证验证库id_validator验证身份证号合法性及根据身份证号返回住址年龄等信息
Mar 20 Python
Python简单实现词云图代码及步骤解析
Jun 04 Python
Python如何实现自带HTTP文件传输服务
Jul 08 Python
Python matplotlib绘制条形统计图 处理多个实验多组观测值
Apr 21 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 Token(令牌)设计
2008/03/15 PHP
php 批量添加多行文本框textarea一行一个
2014/06/03 PHP
PHP安装memcached扩展笔记
2015/05/28 PHP
PHP给文字内容中的关键字进行套红处理
2016/04/12 PHP
PHP socket 模拟POST 请求实例代码
2016/07/18 PHP
总结PHP中DateTime的常用方法
2016/08/11 PHP
PHP读取并输出XML文件数据的简单实现方法
2017/12/22 PHP
PHP使用curl_multi实现并发请求的方法示例
2018/04/29 PHP
php实现根据身份证获取精准年龄
2020/02/26 PHP
JavaScript 私有成员分析
2009/01/13 Javascript
一个简单的JS鼠标悬停特效具体方法
2013/06/17 Javascript
jQuery 中$(this).index与$.each的使用指南
2014/11/20 Javascript
JS动态加载当前时间的方法
2015/02/09 Javascript
JavaScript字符集编码与解码详谈
2017/02/02 Javascript
Vue2实时监听表单变化的示例讲解
2018/08/30 Javascript
js拖动滑块和点击水波纹效果实例代码
2018/10/16 Javascript
浅谈Vue.js 关于页面加载完成后执行一个方法的问题
2019/04/01 Javascript
小程序简单两栏瀑布流效果的实现
2019/12/18 Javascript
vue实现购物车的小练习
2020/12/21 Vue.js
[33:39]DOTA2上海特级锦标赛C组小组赛#2 LGD VS Newbee第二局
2016/02/27 DOTA
二种python发送邮件实例讲解(python发邮件附件可以使用email模块实现)
2013/12/03 Python
Python实现一个简单的验证码程序
2017/11/03 Python
Python处理CSV与List的转换方法
2018/04/19 Python
python计算列表内各元素的个数实例
2018/06/29 Python
Python 学习教程之networkx
2019/04/15 Python
Python基于Dlib的人脸识别系统的实现
2020/02/26 Python
24个canvas基础知识小结
2014/12/17 HTML / CSS
Html5实现二维码扫描并解析
2016/01/20 HTML / CSS
公司员工的自我评价范例
2013/11/01 职场文书
应届生人事助理求职信
2013/11/09 职场文书
主持人婚宴答谢词
2014/01/28 职场文书
家具公司总经理岗位职责
2014/07/08 职场文书
初中班长竞选稿
2015/11/20 职场文书
党员干部学习心得体会
2016/01/23 职场文书
《有余数的除法》教学反思
2016/02/22 职场文书