python初学-----查找Android项目中未使用的string资源

最近在自学python,慢慢的写点小东西记录一下。

这个小程序是帮助我们查找一下我们定义在strings.xml中在java代码中和layout文件中未使用到的资源。我们就可以进行清理掉没用的资源文件。

我是这样一个思路:
0. 首先通过xml解析取出strings.xml中的name部分和值(value)部分,存放到list中
1.遍历找到app\src\main\java和res\layout路径下的所有文件,把文件路径存放到一个数组中
2.通过遍历每一个文件路径 打开文件,查找文件中是否存在strings.xml中有对应的引用R.string.xxx的部分,或者layout文件中有@string/xxx的部分,如果有就把之前存放的集合里面的数据删除掉。剩余的就是没有被踢出去的就是未被使用的。
具体代码如下:

import os
from os import path
from xml.etree.ElementTree import ElementTree

dir_root=path.abspath(os.getcwd());


print(dir_root)

tree = ElementTree()

s=dir_root+"\\app\\src\\main\\res\\values\\strings.xml"

file=open(s,"r",encoding="utf-8")

element=tree.parse(s)

valueList=[]
keyList=[]

strings_data=[];

#遍历strings.xml中所有文本
for e in element:
    valueList.append(e.text)
    keyList.append(str(e.attrib.get("name")))

strings_data=list(zip(keyList,valueList))
#print(strings_data)


#遍历指定目录下的所有文件
def dirlist(path, allfile):
    filelist =  os.listdir(path)  

    for filename in filelist:  
        filepath = os.path.join(path, filename)  
        if os.path.isdir(filepath):  
            dirlist(filepath, allfile)  
        else:  
            allfile.append(filepath)  
    return allfile  

file=[]

dirlist(dir_root+"\\app\src\main\java", file)
dirlist(str(dir_root+"\\app\src\main\\res\layout"), file)

#查找java文件中的字符串
def findJavaFileToString(fileList,list):
    for fileitme in fileList:
        a=open(fileitme,"r",encoding="utf-8")
        sourceText=a.read()
        a.close()
        for item in list:
            if sourceText.find(str("R.string."+item[0])) !=-1:
                strings_data.remove(item)
                print("文件路径:",fileitme,",找到的字符串为:",item[0])
            elif sourceText.find(str("@string/"+item[0])) !=-1:
                strings_data.remove(item)
                print("文件路径:",fileitme,",找到的字符串为:",item[0])
            else:
                pass
                #print("文件路径:",fileitme,",未找到的字符串为:",item[0])


findJavaFileToString(file,strings_data)

print("剩余未找到的为引用为:",strings_data)



只需要将该文件放置到项目根目录中,然后运行该文件即可。运行后的截图为:
运行后的截图

通过该方法同样可以找到找到剔除drawable中未被使用的图片资源文件,这个下次在写。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值