用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 break语句详解
Mar 11 Python
Python对象的深拷贝和浅拷贝详解
Aug 25 Python
python基础教程之Hello World!
Aug 29 Python
零基础写python爬虫之抓取糗事百科代码分享
Nov 06 Python
Python实现获取域名所用服务器的真实IP
Oct 25 Python
Python在图片中添加文字的两种方法
Apr 29 Python
Python Flask前后端Ajax交互的方法示例
Jul 31 Python
python 对给定可迭代集合统计出现频率,并排序的方法
Oct 18 Python
python模糊图片过滤的方法
Dec 14 Python
使用OpenCV实现仿射变换—缩放功能
Aug 29 Python
在tensorflow中设置保存checkpoint的最大数量实例
Jan 21 Python
Pytorch转tflite方式
May 25 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&MYSQL留言板源码
2020/07/19 PHP
php汉字转拼音的示例
2014/02/27 PHP
php json转换成数组形式代码分享
2014/11/10 PHP
Web程序工作原理详解
2014/12/25 PHP
PHP编写文件多服务器同步程序
2016/07/02 PHP
PHP简单实现模拟登陆功能示例
2017/09/15 PHP
javascript html 静态页面传参数
2009/04/10 Javascript
javascript dom 基本操作小结
2010/04/11 Javascript
js获取鼠标点击的位置实现思路及代码
2014/05/09 Javascript
超级好用的jQuery圆角插件 Corner速成
2014/08/31 Javascript
JQuery勾选指定name的复选框集合并显示的方法
2015/05/18 Javascript
轻松掌握jQuery中wrap()与unwrap()函数的用法
2016/05/24 Javascript
DOM操作原生js 的bug,使用jQuery 可以消除的解决方法
2016/09/04 Javascript
js实现可输入可选择的select下拉框
2016/12/21 Javascript
Node.js使用Express创建Web项目详细教程
2017/03/31 Javascript
JS实现读取xml内容并输出到div中的方法示例
2018/04/19 Javascript
js作用域和作用域链及预解析
2019/04/11 Javascript
node将geojson转shp返回给前端的实现方法
2019/05/29 Javascript
Vue拖拽组件列表实现动态页面配置功能
2019/06/17 Javascript
JavaScript实现移动小精灵的案例代码
2020/12/12 Javascript
Python解析Excle文件中的数据方法
2018/10/23 Python
python文件写入write()的操作
2019/05/14 Python
Python 实现取多维数组第n维的前几位
2019/11/26 Python
使用 Python 写一个简易的抽奖程序
2019/12/08 Python
python代码实现TSNE降维数据可视化教程
2020/02/28 Python
django 解决model中类写不到数据库中,数据库无此字段的问题
2020/05/20 Python
python BeautifulSoup库的安装与使用
2020/12/17 Python
Matplotlib中rcParams使用方法
2021/01/05 Python
Foot Locker意大利官网:全球领先的运动鞋和服装零售商
2017/05/30 全球购物
戴尔荷兰官方网站:Dell荷兰
2020/10/04 全球购物
编写一个 C 函数,该函数在一个字符串中找到可能的最长的子字符串,且该字符串是由同一字符组成的
2015/07/23 面试题
2014年最新学习全国两会精神心得
2014/03/17 职场文书
2014年客房服务员工作总结
2014/11/18 职场文书
学生会生活部工作总结2015
2015/03/31 职场文书
vue 自定义的组件绑定点击事件
2022/04/21 Vue.js
Python如何快速找到多个字典中的公共键(key)
2022/04/29 Python