鱼C论坛

 找回密码
 立即注册
查看: 1966|回复: 6

如何实现从log中提取关键信息导入到excel中

[复制链接]
发表于 2022-7-5 22:24:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
求助:我有一个log日志文件.txt,需求如下:
1、有1000组实验数据,每组实验数据包含几十行内容(写寄存器、读寄存器等操作),我需要提取其中读到的0x88,0x8a,0x90三个寄存器的data值,但是这三个寄存器每组实验数据要读4次(配置两个芯片,每次配置一片芯片后读两次:分别是0x16寄存器写4和写8);
2、每组实验数据会包含(SUCCESS: cfg)或(FAIL:cmd cfg failed)的关键字,在提取1中的寄存器data值的同时需要同时知道该组实验是success还是fail;
3、将上述数据导入到excel中,格式类似下表格所示

  
 
  
AFEXXX_DT
 
 
AFEXXX_DT
 
 
0x16 = 4
0x16 = 8
 
0x16 = 4
0x16 = 8
 
次数
0x88
0x8a
0x90
0x88
0x8a
0x90
 
0x88
0x8a
0x90
0x88
0x8a
0x90
result
1
0xd
0xb
0xd
0xb
0xb
0xd
 
0xd
0xb
0xd
0xb
0xb
0xd
Pass
2
0xb
0xb
0xb
0xb
0xb
0xb
 
0xb
0xb
0xb
0xb
0xb
0xb
Pass
3
0x9
0x9
0x9
0x9
0x9
0x9
 
0x9
0x9
0x9
0x9
0x9
0x9
Pass
4
0xb
0xb
0xd
0xd
0xb
0xd
 
0xb
0xb
0xd
0xd
0xb
0xd
Pass
5
0xb
0x9
0xb
0x9
0x9
0xb
 
0xb
0x9
0xb
0x9
0x9
0xb
Pass
6
0xb
0xb
0xb
0xb
0xb
0xb
 
0xb
0xb
0xb
0xb
0xb
0xb
Pass
7
0xd
0xb
0xd
0xb
0xb
0xd
 
0xd
0xb
0xd
0xb
0xb
0xd
Pass
8
0xb
0xb
0xb
0xb
0xb
0xb
 
0xb
0xb
0xb
0xb
0xb
0xb
Pass
9
0xd
0xb
0xd
0xb
0xb
0xd
 
0xd
0xb
0xd
0xb
0xb
0xd
Pass
10
0xb
0xb
0xb
0xb
0xb
0xb
 
0xb
0xb
0xb
0xb
0xb
0xb
failed


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-7-5 22:25:33 | 显示全部楼层
这是日志文件success或fail的举例说明,请大神帮忙指点一下
### 测试次数:1 ###(success举例)
afexxxx_2p2 cfg 0 /ram/omu/dif/hw/AFEXXX_DT.bin
SUCCESS: cfg
afexxxx_2p2 cfg 1 /ram/omu/dif/hw/AFEXXX_MT.bin
SUCCESS: cfg
afexxxx_2p2 wr 0 16 4
SUCCESS: wr
afexxxx_2p2 rd 0 88 1
addr=0x88(136), data=0xd
SUCCESS: rd
afexxxx_2p2 rd 0 8a 1
addr=0x8a(138), data=0xb
SUCCESS: rd
afexxxx_2p2 rd 0 90 1
addr=0x90(144), data=0xd
SUCCESS: rd
afexxxx_2p2 wr 0 16 8
SUCCESS: wr
afexxxx_2p2 rd 0 88 1
addr=0x88(136), data=0xb
SUCCESS: rd
afexxxx_2p2 rd 0 8a 1
addr=0x8a(138), data=0xb
SUCCESS: rd
afexxxx_2p2 rd 0 90 1
addr=0x90(144), data=0xd
SUCCESS: rd
afexxxx_2p2 wr 0 16 0
SUCCESS: wr
afexxxx_2p2 wr 1 16 4
SUCCESS: wr
afexxxx_2p2 rd 1 88 1
addr=0x88(136), data=0xb
SUCCESS: rd
afexxxx_2p2 rd 1 8a 1
addr=0x8a(138), data=0xb
SUCCESS: rd
afexxxx_2p2 rd 1 90 1
addr=0x90(144), data=0xd
SUCCESS: rd
afexxxx_2p2 wr 1 16 8
SUCCESS: wr
afexxxx_2p2 rd 1 88 1
addr=0x88(136), data=0xd
SUCCESS: rd
afexxxx_2p2 rd 1 8a 1
addr=0x8a(138), data=0xd
SUCCESS: rd
afexxxx_2p2 rd 1 90 1
addr=0x90(144), data=0xd
SUCCESS: rd
afexxxx_2p2 wr 1 16 0
SUCCESS: wr
config AFEXXX done


### 测试次数:2 ###(fail举例1)
afexxxx_2p2 cfg 0 /ram/omu/dif/hw/AFEXXX_DT.bin
[../src/device/Afe79xx/Src/basicFunctions.c][afeSpiCheckWrapper][279]INFO:addr[0x011D], lsb[0], msb[7], data[0x10] not matching with expected value[0x00]
[AFE][2035-06-24 12:41:31]ERR:[C_afe79xx.cpp,L338]position[13897] mode[SPIReadCheck], addr[0x11d] data[0x0] lsb[0] msb[7]
[AFE][2035-06-24 12:41:31]ERR:[cmd.cpp,L280]cmd cfg failed
args_count[0], usage: afe79xx cfg [file]
afexxxx_2p2 cfg 1 /ram/omu/dif/hw/AFEXXX_MT.bin
SUCCESS: cfg
afexxxx_2p2 wr 0 16 4
SUCCESS: wr
afexxxx_2p2 rd 0 88 1
addr=0x88(136), data=0x13
SUCCESS: rd
afexxxx_2p2 rd 0 8a 1
addr=0x8a(138), data=0x13
SUCCESS: rd
afexxxx_2p2 rd 0 90 1
addr=0x90(144), data=0x13
SUCCESS: rd
afexxxx_2p2 wr 0 16 8
SUCCESS: wr
afexxxx_2p2 rd 0 88 1
addr=0x88(136), data=0x13
SUCCESS: rd
afexxxx_2p2 rd 0 8a 1
addr=0x8a(138), data=0x13
SUCCESS: rd
afexxxx_2p2 rd 0 90 1
addr=0x90(144), data=0x13
SUCCESS: rd
afexxxx_2p2 wr 0 16 0
SUCCESS: wr
afexxxx_2p2 wr 1 16 4
SUCCESS: wr
afexxxx_2p2 rd 1 88 1
addr=0x88(136), data=0xb
SUCCESS: rd
afexxxx_2p2 rd 1 8a 1
addr=0x8a(138), data=0xd
SUCCESS: rd
afexxxx_2p2 rd 1 90 1
addr=0x90(144), data=0xd
SUCCESS: rd
afexxxx_2p2 wr 1 16 8
SUCCESS: wr
afexxxx_2p2 rd 1 88 1
addr=0x88(136), data=0xb
SUCCESS: rd
afexxxx_2p2 rd 1 8a 1
addr=0x8a(138), data=0xd
SUCCESS: rd
afexxxx_2p2 rd 1 90 1
addr=0x90(144), data=0xd
SUCCESS: rd
afexxxx_2p2 wr 1 16 0
SUCCESS: wr
config AFEXXX done
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-7-6 01:23:53 | 显示全部楼层
问题1:log日志文件里都是包括像 【### 测试次数:2 ###】 这样的固定字符吗? 还是你自己在这里加的?  
问题2:一定要那样子的Excel格式吗?不能变通一下?(合并单元这种格式,看到头皮就有点麻

为了更好地了解背景和你的需求,最好把txt日志和想要的效果Excel文件,打包发上来。

ps: 另外可以加Q3130137034沟通细聊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-7-6 20:41:09 | 显示全部楼层
阿奇_o 发表于 2022-7-6 01:23
问题1:log日志文件里都是包括像 【### 测试次数:2 ###】 这样的固定字符吗? 还是你自己在这里加的?  
...

感谢解答,问题回复如下:
问题1:日志里每次开头都会有测试次数统计;
问题2:可以变通,只要能体现次数、三个寄存器的data值、pass或fail就行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-7-6 20:43:14 | 显示全部楼层
不知道怎么打包附件
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-7-6 21:41:29 | 显示全部楼层
暂时这样给你看看 这样的效果:
import pandas as pd 
import numpy as np 
import re 
with open('test_log.txt', encoding='utf-8') as f:
    result = re.split('### 测试次数:\d+ ###\n', ''.join(f), re.MULTILINE)[1:]
    print(result)
    print(len(result))
data = [i.split('\n') for i in result]

df = pd.DataFrame(data, ).T 
df.columns=['t1', 't2']
df 

# 
df1 = df[['t1']][df.t1.str.contains('addr=')].reset_index(drop=True)
df1['第次'] = 1
df1['结果'] = 'pass' if len(df[df.t1.str.contains('ERR')]) == 0 else '未知'
df1.columns = ['data', '第次', '结果'] 
df1

# --
df2 = df[['t2']][df.t2.str.contains('addr=')].reset_index(drop=True)
df2['第次'] = 2
df2['结果'] = 'fail' if len(df[df.t2.str.contains('ERR')]) >= 1 else '未知'
df2.columns = ['data', '第次', '结果'] 
df2
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-7-9 14:56:57 | 显示全部楼层
阿奇_o 发表于 2022-7-6 21:41
暂时这样给你看看 这样的效果:

第一段的result运行出来是空的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-28 18:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表