# logTimeProcess **Repository Path**: jnuwangchenhao/log-time-process ## Basic Information - **Project Name**: logTimeProcess - **Description**: python处理log文件,从中提取出需要的操作的具体时间到excel文件 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-01-27 - **Last Updated**: 2022-10-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ### 需求: 对如下log日志文件中,需要提取出指定的日期中的指定操作的具体时间,其中操作是需要提取出移动操作(MOVE_REL以及MOVE_ABS),移动分为三种,开始点,中间点,结束点。开始点和结束点不一定是一一对应的,需要用算法判断出最后的一个开始点以及其匹配到的结束点(对所有结束点如果前面存在有最近的开始点,并且在上一个结束点之后,那么此开始点和结束点就匹配为一对)然后将其中所有的中间点以及该开始点和结束点的操作时间写入到excel表格中。 ### 思路: 引入xlwt库来将最终结果写入生成excel表格,用open()函数来取得fileObject对象,然后利用其readlines()函数来读取log文件所有的行,对readlines()的结果循环处理,利用str.find()函数通过一定的规则来匹配需要找的项,首先筛选出指定日期的行,在其中标出其所有的开始点,结束点以及中间点,然后对开始点和结束点进行匹配,匹配出所有的完整的开始点和结束点的集合。然后对每一组集合中的开始,中间以及结束点的操作时间(时分秒)写入到一张sheet中,最后将所有sheet保存到一个excel表格文件中。 ### 参数: 在main函数中: ###### \# 日期在每行中位置的索引值 date_index = 0 ###### \# 时间在每行中位置的索引值 time_index = 2 ###### \# 要处理的日志的文件名 file_name = './cyc_comp.log' ###### \# 要搜索的日期 date_sign = "1/17/2022" ###### \# 开始的标志 start_sign = '103700,13100,100000' ###### \# 结束的标志 end_sign = "-10000,15000,80000" ###### \# 移动操作的标志 opreate_sign = 'MOVE_REL' ###### \# 保存的文件名字 name = 'move_time.xls' ## 2022/3/8 ### 注意 在脚本被使用中,由于.log文件格式的变化(日期由月/日/年 变成了 日/月/年 并且AM/PM从时间的右边变成了左边), 故代码也要相应变化,函数新增两个参数。 ##### date_index 表示日期在每行中的位置的索引值 ##### time_index 表示时间在每行中的位置的索引值 并且在代码中`datetime.strptime(date_sign, "%m/%d/%Y")` 年月日顺序也要修改。