顶尖高手坛,午夜编年史,维生素b1的作用
接上一篇:,
有一天, 系统稳定性开发负责人找到我,希望我能在跑android 系统monkey的时候,
实时监控logcat的输出,如果一旦发现“java.lang.nullpointerexception"空指针异常,
则立刻用adb bugreport命令导出当时log压缩包出来。
# coding=utf-8 import os import re import subprocess command = "adb logcat -v threadtime" # 具体命令 keyword_reg = r".*java.lang.nullpointerexception.*" # 正则表达式 # 开始执行adb命令 p_obj = subprocess.popen( args=command, stdin=none, stdout=subprocess.pipe, stderr=subprocess.pipe, shell=false) # 实时监控并过滤每一行生成的日志里的关键字 print("logcat catching and filtering...") with p_obj: for line in p_obj.stdout: if re.match(keyword_reg, line.decode("utf-8")): print("found %s" % keyword_reg) print("running adb bugreport to pull releated logs...pls wait") os.system("adb bugreport") # 导出一次bugreport log压缩包 os.system("pause")
re模块的匹配,查找,替换等各种操作,都只能对字符串操作。
p_obj.stdout输出的是bytes,所以需要进行utf-8解码后才能变成字符串。
# coding=utf-8 import os import re import subprocess command = "adb logcat -v threadtime" # 具体命令 keyword_reg = r".*java.lang.nullpointerexception.*" # 正则表达式 def filter_logcat(): # 开始执行adb命令 p_obj = subprocess.popen( args=command, stdin=none, stdout=subprocess.pipe, stderr=subprocess.pipe, shell=false) # 实时监控并过滤每一行生成的日志里的关键字 print("logcat catching and filtering...") with p_obj: for line in p_obj.stdout: if re.match(keyword_reg, line.decode("utf-8")): print("found %s" % keyword_reg) print("running adb bugreport to pull releated logs...pls wait") os.system("adb bugreport") # 导出一次bugreport log压缩包 filter_logcat() os.system("pause")
# coding=utf-8 import os import re import subprocess command = "adb logcat -v threadtime" # 具体命令 keyword_reg = r".*java.lang.nullpointerexception.*" # 正则表达式 class logcatfilter(object): def __init__(self): # 开始执行adb命令 self.p_obj = subprocess.popen( args=command, stdout=subprocess.pipe, stderr=subprocess.pipe) def filter_logcat(self): # 实时监控并过滤每一行生成的日志里的关键字 print("logcat catching and filtering...") with self.p_obj: for line in self.p_obj.stdout: if re.match(keyword_reg, line.decode("utf-8")): print("found %s" % keyword_reg) print("running adb bugreport to pull releated logs...pls wait") os.system("adb bugreport") # 导出一次bugreport log压缩包 if __name__ == '__main__': l_obj = logcatfilter() l_obj.filter_logcat() os.system("pause")
确保android车机设备通过usb线与电脑连接了,adb设备有效连接,
以上代码的3种实现形式都可以直接运行,比如保存为filter_logcat.py并放在桌面,
建议python filter_logcat.py运行,当然也可以双击运行, 效果如下:
更多更好的原创文章,请访问官方网站:
自拍教程(自动化测试python教程,武散人编著)
原文链接:
也可关注“武散人”微信订阅号,随时接受文章推送。
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
新手学习Python2和Python3中print不同的用法
Python基于os.environ从windows获取环境变量
网友评论