用python解壓分析jar包實例
寫這個玩意的背景:在u8多渠道打包里,需要分析jar包,并把里面的文件按目錄和類型分別放在root和assets文件夾里,之前師兄都是手動解壓,一個一個文件夾找文件,效率比較低,剛好最近手上的android項目已經(jīng)做完了,就決定寫一個自動化分析jar文件并復(fù)制粘貼到指定文件夾的腳本。
# -*- 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包實例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
- Python爬蟲逆向分析某云音樂加密參數(shù)的實例分析
- Python調(diào)用jar包方法實現(xiàn)過程解析
- Python使用jpype模塊調(diào)用jar包過程解析
- Python代碼一鍵轉(zhuǎn)Jar包及Java調(diào)用Python新姿勢
- python如何使用jt400.jar包代碼實例
- 利用python腳本如何簡化jar操作命令
- Python3 使用cookiejar管理cookie的方法
- python調(diào)用java的jar包方法
- Java實現(xiàn)的執(zhí)行python腳本工具類示例【使用jython.jar】
- 將Python代碼打包為jar軟件的簡單方法
- python 逆向爬蟲正確調(diào)用 JAR 加密邏輯
相關(guān)文章
win32com操作word之Application&Documents接口學(xué)習(xí)
這篇文章主要為大家介紹了win32com操作word之Application&Documents接口學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-01-01詳談在flask中使用jsonify和json.dumps的區(qū)別
下面小編就為大家分享一篇詳談在flask中使用jsonify和json.dumps的區(qū)別,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-03-03Python?NLP開發(fā)之實現(xiàn)聊天機器人
這篇文章主要為大家介紹了Python如何實現(xiàn)聊天機器人,即使用自然語言處理?(NLP)?來幫助用戶通過文本、圖形或語音與?Web?服務(wù)或應(yīng)用進行交互,感興趣的可以了解一下2023-05-05Python報錯SyntaxError:unexpected?EOF?while?parsing的解決辦法
在運行或編寫一個程序時常會遇到錯誤異常,這時python會給你一個錯誤提示類名,告訴出現(xiàn)了什么樣的問題,下面這篇文章主要給大家介紹了關(guān)于Python報錯SyntaxError:unexpected?EOF?while?parsing的解決辦法,需要的朋友可以參考下2022-07-07解決python使用pd.read_csv()出現(xiàn)錯誤UnicodeDecodeError:?'utf-8&
你是否有過之前用pd.read打開csv文件都正常,但突然有一天運行以前的代碼就突然報錯,這篇文章主要給大家介紹了關(guān)于如何解決python使用pd.read_csv()出現(xiàn)錯誤UnicodeDecodeError:?'utf-8'?codec?can't?decode......的相關(guān)資料,需要的朋友可以參考下2023-12-12在PyCharm中高效使用遠程文件編輯功能的實現(xiàn)
PyCharm作為業(yè)界領(lǐng)先的集成開發(fā)環(huán)境(IDE),提供了強大的本地和遠程開發(fā)功能,本文詳細介紹了如何在PyCharm中使用遠程文件編輯功能,希望能夠幫助你提高遠程開發(fā)的效率和體驗2024-08-08Python 爬蟲批量爬取網(wǎng)頁圖片保存到本地的實現(xiàn)代碼
這篇文章主要介紹了Python 爬蟲批量爬取網(wǎng)頁圖片保存到本地,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-12-12