用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 相关文章推荐
Django框架中render_to_response()函数的使用方法
Jul 16 Python
黑科技 Python脚本帮你找出微信上删除你好友的人
Jan 07 Python
Python2.7编程中SQLite3基本操作方法示例
Aug 09 Python
微信跳一跳辅助python代码实现
Jan 05 Python
django 使用 request 获取浏览器发送的参数示例代码
Jun 11 Python
python os.listdir按文件存取时间顺序列出目录的实例
Oct 21 Python
Python3.4学习笔记之常用操作符,条件分支和循环用法示例
Mar 01 Python
pytorch使用Variable实现线性回归
May 21 Python
python3调用windows dos命令的例子
Aug 14 Python
对python中 math模块下 atan 和 atan2的区别详解
Jan 17 Python
python爬虫利器之requests库的用法(超全面的爬取网页案例)
Dec 17 Python
Python实现单例模式的5种方法
Jun 15 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 程序授权验证开发思路
2009/07/09 PHP
PHP UTF8编码内的繁简转换类
2009/07/20 PHP
destoon实现调用当前栏目分类及子分类和三级分类的方法
2014/08/21 PHP
PHP PDOStatement::fetchColumn讲解
2019/01/31 PHP
ThinkPHP3.1.2 使用cli命令行模式运行的方法
2020/04/14 PHP
使用JQuery和s3captche实现一个水果名字的验证
2009/08/14 Javascript
javascript 计算两个整数的百分比值
2009/12/26 Javascript
用JavaScript对JSON进行模式匹配 (Part 2 - 实现)
2010/07/17 Javascript
js导出table到excel同时兼容FF和IE示例
2013/09/03 Javascript
跟我学习javascript的函数调用和构造函数调用
2015/11/16 Javascript
js和jquery分别验证单选框、复选框、下拉框
2015/12/17 Javascript
jquery实现列表上下移动功能
2016/02/25 Javascript
深入理解JavaScript中的浮点数
2016/05/18 Javascript
jQuery自定义图片缩放拖拽插件imageQ实现方法(附demo源码下载)
2016/05/27 Javascript
Bootstrop实现多级下拉菜单功能
2016/11/24 Javascript
AngularJS中的缓存使用
2017/01/11 Javascript
JavaScript禁止微信浏览器下拉回弹效果
2017/05/16 Javascript
浅谈JS中的反柯里化( uncurrying)
2017/08/17 Javascript
分分钟学会vue中vuex的应用(入门教程)
2017/09/14 Javascript
Angular4的输入属性与输出属性实例详解
2017/11/29 Javascript
python使用xmlrpc实例讲解
2013/12/17 Python
Python中Continue语句的用法的举例详解
2015/05/14 Python
Python函数可变参数定义及其参数传递方式实例详解
2015/05/25 Python
一张图带我们入门Python基础教程
2017/02/05 Python
python如何发送带有附件、正文为HTML的邮件
2021/02/27 Python
OSPREY LONDON官网:英国本土皮具品牌
2019/05/31 全球购物
文言文形式的学生求职信
2013/12/03 职场文书
加拿大探亲邀请信
2014/01/28 职场文书
西门豹教学反思
2014/02/04 职场文书
领导调研接待方案
2014/02/27 职场文书
小班上学期幼儿评语
2014/12/30 职场文书
2015年世界粮食日演讲稿
2015/03/20 职场文书
幼儿园小班教师随笔
2015/08/14 职场文书
2016年小学圣诞节活动总结
2016/03/31 职场文书
一次SQL如何查重及去重的实战记录
2022/03/13 MySQL
python实现会员管理系统
2022/03/18 Python