python中msg是什么意思_python 遍历toast msg文本

背景

最近有个简单的迭代需求,需要统计下整个项目内的Toast的msg, 这个有人说直接快捷键查找下,但这里比较坑爹的是项目中查出对应的有1000多处。妈呀,自己查找,还要根据查找id找到对应string,比较坑。于是就顺带练手写了个python脚本来处理这个问题。当然编码相对不太规范,异常处理也没做。由于lz好久没写过python脚本了,相当生疏。几乎是边查文档编写,记录写编写过程:

查找目录下所有java文件

查找Java文件中含有Toast相关的行

在对应行中找出对应的id

使用id在String中查找对应的toast提示信息。

简易语法介绍

函数定义 def 函数名,可以返回元组。

分号可以省略,通过换行来区分

变量不需要提前声明

if和for语句是这个样子滴:

for node in root:

if node.attrib.has_key("name") > 0 :

导库:import os

执行开始的地方还是main函数,后面会有。

1. 查找目录下所有java文件

这个我是直接copy网上递归遍历的,省略。

查找Java文件中的Toast

需要找出Toast的特征,项目中有两个Toast类 BannerTips和ToastUtils 两个类。

1.先代码过滤对应的行。找到BannerTips、ToastUtils调用的地方

2.找出提示的地方

3.观察其实项目中的id的前面均含有R.string. 可以以此作为区分。

在对应行中找出对应的id

使用id在String中查找对应的toast提示信息。

最后去重。

最后一个比较简单,可以自己写,也可以解析下xml写。

import xml.etree.ElementTree as ET

tree = ET.ElementTree(file = '' + xmlFile)

root = tree.getroot()

for node in root:

if node.attrib.has_key("name") > 0 :

if(node.attrib['name'] == msg):

out.write(":%s\n" % node.text.encode('utf-8'))

贴下代码

import os

import xml.etree.ElementTree as ET

def findStr(out, msg,fullname):

xmlFile = 'xx/src/main/res/values/radio_strings.xml'

strInfos = open(xmlFile,'r+')

tree = ET.ElementTree(file = '' + xmlFile)

root = tree.getroot()

for node in root:

if node.attrib.has_key("name") > 0 :

if(node.attrib['name'] == msg):

out.write("%s\n" % node.text.encode('utf-8'))

def findJava(fullname,out):

file= open(fullname, 'r+')

for line in file:

newline = line.strip()

if(newline.find("ToastUtils.") != -1):

lineTexts = newline.split(',')

if(len(lineTexts) <= 1):

continue

linetxt = lineTexts[1]

aa = linetxt.strip().replace(');', '')

aa = aa.replace(')', '')

if(aa.find('R.string.') != -1):

msgs = aa.split('R.string.')

if(len(msgs) <= 1):

continue

msg = msgs[1]

msg = msg.replace(' :', '');

if(msg.find('?') == -1):

if not msg:

continue

findStr(out, msg, fullname)

else:

if not msg:

continue

findStr(out, msg, fullname)

if(len(msgs) >=2):

findStr(out, msgs[1], fullname)

outDel = open('XX/android_dialogMsg.txt')

output = open('XX/android_dialog_msg.txt','r+')

s = set()

for i in outDel:

s.add(i)

for li in s:

output.write(li)

outDel.close()

output.close()

file.close()

def ListFilesToTxt(dir,file,wildcard,recursion):

exts = wildcard.split(" ")

files = os.listdir(dir)

for name in files:

fullname=os.path.join(dir,name)

if(os.path.isdir(fullname) & recursion):

ListFilesToTxt(fullname,file,wildcard,recursion)

else:

for ext in exts:

if(name.endswith(ext)):

findJava(fullname, file)

break

def Test():

dir = "xxx"

outfile='XX/android_dialogMsg.txt'

wildcard = ".java"

file = open(outfile,"w")

if not file:

print ("cannot open the file %s for writing" % outfile)

ListFilesToTxt(dir,file,wildcard, 1)

file.close()

if __name__ == '__main__':

Test()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值