用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 subprocess模块学习总结
Mar 13 Python
windows系统下Python环境搭建教程
Mar 28 Python
Python引用类型和值类型的区别与使用解析
Oct 17 Python
python opencv实现切变换 不裁减图片
Jul 26 Python
Python进程间通信Queue消息队列用法分析
May 22 Python
pandas的排序和排名的具体使用
Jul 31 Python
python根据多个文件名批量查找文件
Aug 13 Python
python网络编程之多线程同时接受和发送
Sep 03 Python
解决tensorflow添加ptb库的问题
Feb 10 Python
基于Keras中Conv1D和Conv2D的区别说明
Jun 19 Python
如何基于matlab相机标定导出xml文件
Nov 02 Python
python如何用matplotlib创建三维图表
Jan 26 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音乐采集(部分代码)
2007/02/14 PHP
php 无限级数据JSON格式及JS解析
2010/07/17 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(三)
2014/06/23 PHP
适合PHP初学者阅读的4本经典书籍
2016/09/23 PHP
php获取ip及网址的简单方法(必看)
2017/04/01 PHP
jquery+json实现数据列表分页示例代码
2013/11/15 Javascript
JS动态添加与删除select中的Option对象(示例代码)
2013/12/25 Javascript
JavaScript获取文本框内选中文本的方法
2015/02/20 Javascript
javascript实现实时输出当前的时间
2015/04/27 Javascript
简介JavaScript中strike()方法的使用
2015/06/08 Javascript
jQuery Mobile弹出窗、弹出层知识汇总
2016/01/05 Javascript
深入学习js瀑布流布局
2016/10/14 Javascript
vue父组件通过props如何向子组件传递方法详解
2017/08/16 Javascript
webpack配置打包后图片路径出错的解决
2018/04/26 Javascript
vue中过滤器filter的讲解
2019/01/21 Javascript
js微信分享接口调用详解
2019/07/23 Javascript
javascript中的数据类型检测方法详解
2019/08/07 Javascript
解决vue bus.$emit触发第一次$on监听不到问题
2020/07/28 Javascript
python通过scapy获取局域网所有主机mac地址示例
2014/05/04 Python
使用Python内置的模块与函数进行不同进制的数的转换
2016/03/12 Python
python实现在cmd窗口显示彩色文字
2019/06/24 Python
python str字符串转uuid实例
2020/03/03 Python
浅谈Python 命令行参数argparse写入图片路径操作
2020/07/12 Python
python Cartopy的基础使用详解
2020/11/01 Python
Delphi笔试题
2016/11/14 面试题
程序员求职信
2014/04/16 职场文书
地震捐款倡议书
2014/08/29 职场文书
店铺转让协议书(2014版)
2014/09/23 职场文书
个人四风问题整改措施
2014/10/24 职场文书
安全隐患整改报告
2014/11/06 职场文书
2014年人大工作总结
2014/12/10 职场文书
莫言获奖感言(全文)
2015/07/31 职场文书
Pytest之测试命名规则的使用
2021/04/16 Python
Python爬虫实战之爬取携程评论
2021/06/02 Python
Golang中channel的原理解读(推荐)
2021/10/16 Golang
vue实现书本翻页动画效果实例详解
2022/04/08 Vue.js