nomn文件分析
#encoding=gbk import os import re import math from os import path''' 手動輸入文件nmon文件路徑,要截取的開始時間,結束時間 '''rootdir='E:\\pylianxi\\ceshi' #input("請輸入文件路徑:") start_time="14:46" #截取的開始時間 end_time="14:56" #截取的結束時間 print(rootdir)def avg(list_a): #求平均值函數avg_list=0.0float_item_list=[float(i) for i in list_a]for i in float_item_list:if not isinstance(i,(int,float)):print("列表中含有非數字!!")return Noneif len(float_item_list)>0:avg_list=sum(float_item_list)/len(float_item_list)#return round(avg_list,3)return ('%.2f'%avg_list)else:return Nonewrite_count=0 #記錄是否是第一次生成要輸出的文件aa.txt file_names=os.listdir(rootdir)for i in file_names:file_path=path.join(rootdir,i)if path.isfile(file_path) and ".nmon" in i:print(file_path)#file_record=re.findall(r"\w+",i)[0]+re.findall(r"\d+",i)[0]file_record=i[:6] #+i[4:6]#file_record=re.search(r"(\w+)-(\d+)",i).group(1)+re.search(r"(\w+)-(\d+)",i).group(2)print(file_record)#with open(file_path,'r',encoding='gbk') as fp:with open(file_path,'r',encoding='utf-8') as fp:data_all=fp.readlines()data_times={}for j in range(len(data_all)):if re.search(r"ZZZZ,T",data_all[j]):#data_times.append(data_all[j].split(',')[2])data_times[j]=data_all[j].split(',')[2]#print(data_times)start_row=0end_row=max(data_times.keys())for k,v in data_times.items():if start_time in v:start_row=kprint("循環中的start_row:",start_row)breakfor k,v in data_times.items():if end_time in v:end_row=kprint("循環中的end_row:",end_row)breakprint("校驗前的start_row:",start_row)if start_row==0:print("未找到開始時間,從文件頭開始")print("校驗前的end_row:",end_row)if end_row==max(data_times.keys()):print("未找到結束時間,計算至文件結尾")performance_cpu=[]performance_mem=[]performance_disk_single=[]performance_disk=[]for n in data_all[start_row:end_row]:if re.search(r"CPU_ALL,T.*",n):#print(n.split(",")[5])performance_cpu.append(100-float(n.split(",")[5]))if re.search(r"MEM,T.*",n):performance_mem.append((float(n.split(",")[2])-float(n.split(",")[6])-float(n.split(",")[11]))*100/float(n.split(",")[2]))if re.search(r"DISKXFER,T.*",n):performance_disk_single=n.split(",")[2:]sum_disk=0.0for nn in performance_disk_single:sum_disk+=float(nn)performance_disk.append(sum_disk)#print(performance_cpu)#print(performance_mem)#print(performance_disk)cpu_avg=avg(performance_cpu)mem_avg=avg(performance_mem)disk_avg=avg(performance_disk)output_filename='aa.txt'output_path=path.join(rootdir,output_filename)if write_count==0:fp1=open(output_path,'w',encoding='gbk')fp1.write("")write_count+=1fp1.close()with open(output_path,'a+',encoding='gbk') as fp2:fp2.write(file_record+','+str(cpu_avg)+','+str(mem_avg)+','+str(disk_avg)+'\n')
?
轉載于:https://www.cnblogs.com/xiaoxiao075/p/10186818.html
總結
- 上一篇: 注解--python库--matplot
- 下一篇: 从应用到内核查接口超时(中)