python解析AndroidManifest.xml文件

  在写分析报告的时候需要贴上apk的权限,手动一个一个粘贴上去感觉很麻烦,于是自己写了个脚本自动获取权限,同时能给出相应的中文说明。不废话了,先来介绍python的几个函数:

  1、Python 去除字符串空格的函数为:strip()去除两边空格,lstrip()去除左边空格,rstrip()去除右边空格。    

# 例去除字符串左右空格
a = ' Python '
a = a.strip()        # 去除空格后保存变量
print a        # 输出变量a
>> Python

  2、startswith()函数判断文本是否以某个字符开始,endswith()函数判断文本是否以某个字符结束。

  3、字符串查找:变量.find("要查找的内容"[,开始位置,结束位置]),开始位置和结束位置,表示要查找的范围,为空则表示查找所有。查找到后会返回位置,位置从0开始算,如果没找到则返回-1。在python中-1被认为是True,切记!

str = 'a,hello'
print str.find('hello')    # 在字符串str里查找字符串hello
>> 2            # 输出结果

  本文主要用到find函数。通过查找“uses-permission”来定位权限描述所在的位置,然后通过列表的“:”操作符来截取权限信息。具体代码如下:  

 1 #-*-coding:utf-8-*-
 2 
 3 ''' uses-permission Array '''
 4 usesPermissionArray = []
 5 ''' sdk version '''
 6 sdkVersion = ''
 7 ''' localesArray '''
 8 localesArray = []
 9 ''' icon file name '''
10 #iconFileArray = []
11 
12 f = open(r"C:\Users\***\Desktop\AndroidManifest.xml", "r+")
13 xmlinfo = f.readlines()
14 
15 for line in xmlinfo:
16     if line.find('uses-permission') > -1 :
17         usesPermissionArray.append(line[line.find('"')+1:line.rfind('"')])
18     elif line.find('sdkVersion:') > -1 :
19         sdkVersion = line[line.find('"')+1:line.rfind('"')] #get sdkVersion
20     elif line.find('locales:') > -1 :
21         localesArray = line[line.find(':')+2:].split(' ')
22 print usesPermissionArray

 这是我以前写的博客,后来发现github上有更全面的方法:https://github.com/antitree/AxmlParserPY

原文地址:https://www.cnblogs.com/goodhacker/p/3029424.html