網(wǎng)站首頁(yè) Python教程 正文
前言
在實(shí)際診斷測(cè)試開發(fā)中,我們寫測(cè)試腳本會(huì)用到CDD文件中的診斷,常規(guī)做法可能是用到哪個(gè)就定義哪個(gè),這樣做的弊端是有可能造成重復(fù)定義,或者整個(gè)工程中有不同的變量名,較為好的方式是頭文件中統(tǒng)一定義,如果人去單獨(dú)定義的話,CDD中診斷有比較多,浪費(fèi)時(shí)間,所以基于這個(gè)需求,我想到了可以用Python 腳本解析CDD文件,統(tǒng)一定義,一鍵生成,十分快捷。
測(cè)試軟硬件環(huán)境:
Win10 X64
Python 3.8
PyQt5 5.16.5
基本介紹
1. 如下圖是工具的界面,輸入是cdd 文件,輸出 是 bwm_test_DiagRequest_Variables.cin
,這個(gè)頭文件可以直接放在工程里,這樣用到哪個(gè)診斷就可以直接使用了,無需重復(fù)定義或者單獨(dú)定義
2.代碼簡(jiǎn)單介紹
-
ParseCdd_Main.py
是主函數(shù)所在文件 -
cdd.py
是解析cdd文件的邏輯處理文件 -
parsecdd.py
是 QtDesigner 生成的UI文件
3?? cdd文件結(jié)構(gòu)分析
- 打開cdd文件,看到是xml格式的,這就好辦了,那就一定能夠找到它的組成結(jié)構(gòu)的,找到后直接用lxml 庫(kù)去解析
- 核心代碼就這一行 ,可以字節(jié)跟著這個(gè)繼承關(guān)系去找找看
ecu = cddXML.xpath("http://VAR//DIAGINST//SERVICE//SHORTCUTNAME/TUV/text()")
def parseCdd(self,filename): cddXML = etree.parse(filename) if cddXML: ecu = cddXML.xpath("http://VAR//DIAGINST//SERVICE//SHORTCUTNAME/TUV/text()") if ecu: self.diagCan = '' for i in ecu: temp = i.replace("/","_").replace("#","_").replace(": ","_").replace(":","_").replace(" ","_").replace(" - ","_").replace("-","_").replace(" ","_") self.diagCan = self.diagCan + "\n" + "diagRequest " + temp +" req_" + temp + ";" self.diagCan = "variables\n{\n%s\n}"%self.diagCan print(self.diagCan) newFile = os.path.splitext(filename)[0] + '_DiagRequest_Variables.cin' with open(newFile,'w') as f: f.write(self.diagCan) else: print("parse cdd file failed!") else: print("parse file failed!")
本節(jié)測(cè)試使用源碼放在Git上了,有需自取
https://github.com/yiyuchenguang/CANoeAbout.git
原文鏈接:https://blog.csdn.net/qq_34414530/article/details/124861979
相關(guān)推薦
- 2022-11-19 ubuntu desktop 開啟root賬戶
- 2022-05-27 Android實(shí)現(xiàn)拼圖游戲_Android
- 2023-11-15 LaTeX調(diào)整圖片大小的方法;自動(dòng)調(diào)整合適的大小
- 2022-11-06 react中關(guān)于Context/Provider/Consumer傳參的使用_React
- 2022-08-26 一篇文章搞懂Go語言中的Context_Golang
- 2022-09-14 如何使用R語言做邏輯回歸詳解_R語言
- 2022-10-14 SpringCloud組件之Feign遠(yuǎn)程調(diào)用
- 2023-04-12 Blazor實(shí)現(xiàn)組件嵌套傳遞值的示例詳解_其它綜合
- 欄目分類
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支