1.自动化导出logcat 关键字文本:
提取logcat中一个或者多个关键字。
2.自动化处理logcat时间点:
自动计算大数据量的logcat时间点信息。
3.自动化计算平均值:
自动计算大数据量的数据的平均值。
4.自动化计算sum值:
自动计算大数据量的数据的和。
1.自动化导出logcat 关键字文本
我们平时收集的logcat信息,有的是一个比较全面的信息数据,但是我们不是所有的信息都需要的,所以需要提取一些logcat信息中的某些关键字写入另外一个文件中,有这个需求,下面是执行这个功能的脚本:
# Author: jeffmony@163.com
# Date : 23/01/19
import sys
import string
KEYWORD1 = 'ActivityManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER]'
KEYWORD2 = 'onFrameAvailable first frame arrived'
KEYWORDS = [KEYWORD1,KEYWORD2]
argv1 = sys.argv[1]
input_file = open(argv1, 'rU')
argv2 = sys.argv[2]
output_file = open(argv2, "w")
try:
for line in input_file:
for keyword in KEYWORDS:
result = string.find(line, keyword) != -1
if result:
output_file.write(line)
finally:
input_file.close()
output_file.close()
输入的样例是:
python logcat_filter.py input_file.txt output_file.txt
第一个参数是输入文件,第二个文件是输出文件。我们将KEYWORDS列表中的关键字提取出来写入到output_file.txt文件中。
2.自动化处理logcat时间点
做测试camera 拍照性能的时候,需要一些logcat信息来记录一下拍照的各个时间点,抓住这些性能数据,需要分析的话挺费事的,一个一个计算,很浪费时间,现在根据我们logcat打点的特点,提取出一套自动化处理logcat时间点的脚本。
下面看看简单的例子,
例如 小米Note7拍照例子——前置人像拍照的logcat如下:
01-15 10:23:25.217 E/litianpeng( 7211): MiCamera2 takePicture
01-15 10:23:25.248 E/CHIUSECASE( 643): chxadvancedcamerausecase.cpp:2392 ExecuteCaptureRequest() litianpeng AdvancedCameraUsecase::ExecuteCaptureRequest i = 0
01-15 10:23:25.248 E/CHIUSECASE( 643): chxadvancedcamerausecase.cpp:3131 SelectFeatureToExecuteCaptureRequest() litianpeng SelectFeatureToExecuteCaptureRequest 0,0,0,0,0,1
01-15 10:23:25.248 E/CHIUSECASE( 643): chxfeaturemultiframe.cpp:719 ExecuteProcessRequest() litianpeng FeatureMultiframe::ExecuteProcessRequest i = 0
01-15 10:23:25.396 E/CHIUSECASE( 643): chxfeaturemultiframe.cpp:1193 ProcessResult() litianpeng ProcessResult ##
01-15 10:23:25.406 E/CHICLEARSHOT( 643): ClearShotNodeProcRequest():332 litianpeng camxchinodeclearshot visionclearshot start
01-15 10:23:26.039 E/CHICLEARSHOT( 643): ClearShotNodeProcRequest():334 litianpeng camxchinodeclearshot visionclearshot end
01-15 10:23:26.059 E/ ( 643): litianpeng SkinBeautifier process start
01-15 10:23:28.082 E/ ( 643): litianpeng SkinBeautifier process end
01-15 10:23:28.083 E/CHIUSECASE( 643): chxfeaturemultiframe.cpp:1229 ProcessResult() litianpeng ProcessResult ###
01-15 10:23:28.205 E/ ( 643): litianpeng MiBokehMiui process start
01-15 10:23:29.015 E/ ( 643): litianpeng MiBokehMiui process end
01-15 10:23:29.349 E/litianpeng( 7211): preparePhotoImageReader onImageAvailable
由于这儿不好粘贴文件,上面是一组数据,有13行,那么13行就作为一个INTERNAL,具体在python处理中会使用这个INTERNAL,下面还是直接看一下python脚本:
# Author: jeffmony@163.com
# Date : 15/01/19
import sys
INTERNAL = 13
def computeTimeDelta(time1, time2):
arr1 = time1.split(':')
arr2 = time2.split(':')
result = 0;
result = (int(arr2[0]) -int(arr1[0])) * 60*60*1000 + (int(arr2[1])-int(arr1[1]))*60*1000 + (int(float(arr2[2])*1000)-int(float(arr1[2])*1000))
return result;
def printData(list):
result = 0
for i in range(len(list)-1):
print '{:6d}'.format(int(list[i+1])),
result += int(list[i])
print '| sum ={:6d}'.format(int(result)),
argv = sys.argv[1]
file_object = open(argv, 'rU')
list=[]
try:
for line in file_object:
tempStr = line.strip('\n')
start = tempStr.find(' ')
tempStr = tempStr[start+1:]
end = tempStr.find(' ')
tempStr = tempStr[:end]
list.append(tempStr)
finally:
file_object.close()
result = [0]*INTERNAL
for i in range(len(list)-1):
tempIndex = (i+1)%INTERNAL
if tempIndex != 0:
result[tempIndex] = computeTimeDelta(list[i], list[i+1])
else:
printData(result)
result = [0]*INTERNAL
print
printData(result)
执行的语句是:python logcat_shell.py test2.txt
执行的结果如下:这样提取出来的结果更加方便一点,不用到处计算了。
31 0 0 148 10 633 20 2023 1 122 810 334 | sum = 3798
72 0 1 147 25 612 19 2024 2 81 541 342 | sum = 3524
34 0 0 135 6 585 19 1878 16 99 500 330 | sum = 3272
39 1 0 152 13 339 20 1700 2 85 517 339 | sum = 2868
31 1 0 185 5 278 21 1738 2 93 475 345 | sum = 2829
27 1 0 157 5 648 21 2027 4 95 528 341 | sum = 3513
22 0 0 150 3 637 23 2168 1 93 552 336 | sum = 3649
34 0 0 159 8 630 18 2060 1 101 485 337 | sum = 3496
13 0 0 158 4 674 19 2012 2 91 532 334 | sum = 3505
31 0 0 152 13 593 22 2161 2 85 546 332 | sum = 3605
47 0 0 164 14 581 20 1987 1 98 544 327 | sum = 3456
3.自动化计算平均值
原始数据如下,希望最终能计算出每一列的平均值:
47 164 581 1987 544 327 3650
72 147 612 2024 541 342 3738
34 135 585 1878 500 330 3462
39 152 339 1700 517 339 3086
31 185 278 1738 475 345 3052
27 157 648 2027 528 341 3728
22 150 637 2168 552 336 3865
34 159 630 2060 485 337 3705
13 158 674 2012 532 334 3723
31 152 593 2161 546 332 3815
执行的脚本如下:
# Author: jeffmony@163.com
# Date : 15/01/19
import sys
import re
import numpy
argv = sys.argv[1]
file_object = open(argv, 'rU')
arr_count = 0
list = []
try:
for line in file_object:
tempStr = line.strip('\n').strip(' ')
## important more ' ' replace with one ' '
tempStr = re.sub(' +',' ', tempStr)
arr_count = len(tempStr.split(' '))
list.append(tempStr)
finally:
file_object.close()
result = numpy.zeros(arr_count)
i = 0
for item in list:
arr = item.split(' ')
for index in range(len(arr)):
result[index] += int(arr[index])
i += 1
for index in range(len(result)):
print float(result[index])/i
运行结果如下:
jeffmony@jeffmony-OptiPlex-7050:~/tools$ python compute_ave.py data.txt
35.0
155.9
557.7
1975.5
522.0
336.3
3582.4
4.自动化计算sum值
计算每一行的和,原始数据如下:
47 164 581 1987 544 327 3650
72 147 612 2024 541 342 3738
34 135 585 1878 500 330 3462
39 152 339 1700 517 339 3086
31 185 278 1738 475 345 3052
27 157 648 2027 528 341 3728
22 150 637 2168 552 336 3865
34 159 630 2060 485 337 3705
13 158 674 2012 532 334 3723
31 152 593 2161 546 332 3815
python脚本如下:
# Author: jeffmony@163.com
# Date : 16/01/19
import sys
import re
import numpy
argv = sys.argv[1]
file_object = open(argv, 'rU')
list = []
try:
for line in file_object:
tempStr = line.strip('\n').strip(' ')
## important more ' ' replace with one ' '
tempStr = re.sub(' +',' ', tempStr)
list.append(tempStr)
finally:
file_object.close()
result = numpy.zeros(len(list))
i = 0
for item in list:
arr = item.split(' ')
for index in range(len(arr)):
result[i] += int(arr[index])
i += 1
for index in range(len(result)):
print int(result[index])
运行结果如下:
$ python compute_sum.py data.txt
7300
7476
6924
6172
6104
7456
7730
7410
7446
7630
网友评论