-import os\r
-import sys\r
-\r
-path = r"."\r
-\r
-\r
-txtname = sys.argv[-1]\r
-\r
-# 字母要小写\r
-str_bin_list =[\r
- ['0001',"开机 "],\r
- ['0002',"关机 "],\r
- ['0003',"重启 "],\r
- ['0004',"ota升级 "],\r
- ['0005',"恢复出厂设置 "],\r
- ['0801',"屏幕亮 "],\r
- ['0802',"屏幕灭 "],\r
- ['0a01',"充电开始 "],\r
- ['0a02',"充电停止 "],\r
- ['0e01',"本地音乐开始播放 "],\r
- ['0e02',"本地音乐开始暂停 "],\r
- ['0e03',"本地音乐播放停止 "],\r
- ['0f01',"闹钟铃声开始播放 "],\r
- ['0f02',"闹钟铃声播放停止 "],\r
- ['0f03',"倒计时铃声开始播放 "],\r
- ['0f04',"倒计时铃声播放停止 "],\r
- ['0f05',"查找手表铃声开始播放 "],\r
- ['0f06',"查找手表铃声播放停止 "],\r
- ['1101',"录音开始 "],\r
- ['1102',"录音停止 "],\r
- ['1103',"AI录音开始 "],\r
- ['1104',"AI录音停止 "]\r
- ]\r
-\r
-\r
-f_out = open("runtimeout.txt","w+")\r
-\r
-with open(txtname,"rb+")as file:\r
- data_1 = file.read(2)\r
- data_2 = file.read(4)\r
- while data_1:\r
- # data_1_bin = data_1.hex()\r
- data_1_bin = ''.join('{:02x}'.format(b) for b in data_1[::-1]) # 大端显示的16进制字符串\r
- data_2_bin = ''.join('{:02x}'.format(b) for b in data_2[::-1]) # 大端显示的16进制字符串\r
- coutn=0\r
- for l in str_bin_list:\r
- coutn+=1\r
- if l[0]==data_1_bin:\r
- f_out.write(l[1])\r
- break\r
- f_out.write(data_1_bin)\r
- f_out.write(' ')\r
- f_out.write(data_2_bin)\r
- f_out.write('\n')\r
- \r
- data_1 = file.read(2)\r
- data_2 = file.read(4)\r
- # data_1_int=int(data_1)\r
- \r
-file.close()\r
-f_out.close()\r
+import os \r
+import sys \r
\r
+# 定义输出目录的路径 \r
+output_dir = os.path.join("tools", "log_parser") \r
\r
+# 如果输出目录不存在,则创建该目录 \r
+os.makedirs(output_dir, exist_ok=True) \r
+\r
+# 定义输出文件的完整路径 \r
+output_file_path = os.path.join(output_dir, "runtimeout.txt") \r
+\r
+# 定义默认的输入文件路径 \r
+default_txtname = "default_input.txt" # 请将此处的文件名替换为你的默认输入文件名 \r
+\r
+# 从命令行参数中获取输入文件名称,如果没有提供则使用默认文件 \r
+txtname = sys.argv[-1] if len(sys.argv) > 1 else default_txtname \r
+\r
+# 字符串与其对应的消息的映射 \r
+str_bin_list = [ \r
+ ['0001', "开机 "], \r
+ ['0002', "关机 "], \r
+ ['0003', "重启 "], \r
+ ['0004', "ota升级 "], \r
+ ['0005', "恢复出厂设置 "], \r
+ ['0801', "屏幕亮 "], \r
+ ['0802', "屏幕灭 "], \r
+ ['0a01', "充电开始 "], \r
+ ['0a02', "充电停止 "], \r
+ ['0e01', "本地音乐开始播放 "], \r
+ ['0e02', "本地音乐开始暂停 "], \r
+ ['0e03', "本地音乐播放停止 "], \r
+ ['0f01', "闹钟铃声开始播放 "], \r
+ ['0f02', "闹钟铃声播放停止 "], \r
+ ['0f03', "倒计时铃声开始播放 "], \r
+ ['0f04', "倒计时铃声播放停止 "], \r
+ ['0f05', "查找手表铃声开始播放 "], \r
+ ['0f06', "查找手表铃声播放停止 "], \r
+ ['1101', "录音开始 "], \r
+ ['1102', "录音停止 "], \r
+ ['1103', "AI录音开始 "], \r
+ ['1104', "AI录音停止 "] \r
+] \r
+\r
+# 打开输出文件以写入 \r
+with open(output_file_path, "w+") as f_out: \r
+ # 打开输入文件以读取 \r
+ with open(txtname, "rb") as file: \r
+ data_1 = file.read(2) \r
+ data_2 = file.read(4) \r
+ while data_1: \r
+ # 转换数据为大端16进制字符串 \r
+ data_1_bin = ''.join('{:02x}'.format(b) for b in data_1[::-1]) \r
+ data_2_bin = ''.join('{:02x}'.format(b) for b in data_2[::-1]) \r
+ found = False \r
+ \r
+ # 遍历查找字符串 \r
+ for l in str_bin_list: \r
+ if l[0] == data_1_bin: \r
+ f_out.write(l[1]) \r
+ found = True \r
+ break \r
+ \r
+ if not found: \r
+ f_out.write(data_1_bin) # 如果没有找到对应的字符串,则写入二进制字符串 \r
+ f_out.write(' ') \r
+ f_out.write(data_2_bin) \r
+ f_out.write('\n') \r
+ \r
+ # 读取下一组数据 \r
+ data_1 = file.read(2) \r
+ data_2 = file.read(4) \r
+\r
+# 使用with语句自动关闭文件
\ No newline at end of file