用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常用正则表达式符号浅析
Aug 13 Python
Python中的字符串查找操作方法总结
Jun 27 Python
python在非root权限下的安装方法
Jan 23 Python
Python实现读取txt文件中的数据并绘制出图形操作示例
Feb 26 Python
python os模块简单应用示例
May 23 Python
python @propert装饰器使用方法原理解析
Dec 25 Python
Selenium使用Chrome模拟手机浏览器方法解析
Apr 10 Python
python3+opencv 使用灰度直方图来判断图片的亮暗操作
Jun 02 Python
Python tempfile模块生成临时文件和临时目录
Sep 30 Python
python使用dlib进行人脸检测和关键点的示例
Dec 05 Python
地图可视化神器kepler.gl python接口的使用方法
Dec 22 Python
使用Python拟合函数曲线
Apr 14 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中使用Oracle数据库(2)
2006/10/09 PHP
php支持断点续传、分块下载的类
2016/05/02 PHP
tp5框架无刷新分页实现方法分析
2019/09/26 PHP
Laravel使用swoole实现websocket主动消息推送的方法介绍
2019/10/20 PHP
Add Formatted Text to a Word Document
2007/06/15 Javascript
模仿jQuery each函数的链式调用
2009/07/22 Javascript
jquery ajax 登录验证实现代码
2009/09/23 Javascript
网页自动跳转代码收集
2009/09/27 Javascript
jQuery EasyUI API 中文文档 - DataGrid数据表格
2011/11/17 Javascript
javascript window.confirm确认 取消对话框实现代码小结
2012/10/21 Javascript
window.onresize 多次触发的解决方法
2013/11/08 Javascript
jQuery插件开发的五种形态小结
2015/03/04 Javascript
js中的关联数组与普通数组详解
2016/07/27 Javascript
jQuery+CSS3实现点赞功能
2017/03/13 Javascript
vue.js实例todoList项目
2017/07/07 Javascript
jquery.validate.js 多个相同name的处理方式
2017/07/10 jQuery
基于百度地图api清除指定覆盖物(Overlay)的方法
2018/01/26 Javascript
详解vuex之store拆分即多模块状态管理(modules)篇
2018/11/13 Javascript
vue实现的微信机器人聊天功能案例【附源码下载】
2019/02/18 Javascript
Vue+element+cookie记住密码功能的简单实现方法
2020/09/20 Javascript
pip 错误unused-command-line-argument-hard-error-in-future解决办法
2014/06/01 Python
深入理解python中的闭包和装饰器
2016/06/12 Python
django2.0扩展用户字段示例
2019/02/13 Python
Selenium执行完毕未关闭chromedriver/geckodriver进程的解决办法(java版+python版)
2020/12/07 Python
高校十八大报告感想
2014/01/27 职场文书
青年安全生产示范岗事迹材料
2014/05/04 职场文书
小组口号大全
2014/06/09 职场文书
社团活动总结模板
2014/06/30 职场文书
水利专业大学生职业生涯规划书范文
2014/09/17 职场文书
毕业生党员个人总结
2015/02/14 职场文书
史上最牛辞职信
2015/05/13 职场文书
实施意见格式范本
2015/06/05 职场文书
2016年师德师风学习心得体会
2016/01/12 职场文书
Pycharm远程调试和MySQL数据库授权问题
2022/03/18 MySQL
python中redis包操作数据库的教程
2022/04/19 Python
吉利入股戴姆勒后smart“长大了”
2022/04/21 数码科技