断刀log读取,及数据分析

#-*-coding:gbk-*-
import matplotlib.pyplot as plt
import numpy as np
import os 
import chardet
def datacreate(name1):
    print('find ',name1)
    path='./'+name
    f = open(path,'rb')      # 先用二进制打开
    data = f.read()      # 读取文件内容
    file_encoding = chardet.detect(data).get('encoding')  # 得到文件的编码格式
    input1 = open(path,'r', encoding=file_encoding)   #读取文件
    source = input1.read()
    source_list=source.split('\n')    #每行分割
    time_list=[]                          
    process_list=[]
    mean_list=[]
    print('initialize.....')
    for line in source_list:                     
        if '刀具异常磨损均值判断' not in line:            #识别存在平均值的行
            continue
        time=line.split('[')
        #print(time)
        time=time[1].split(']')
        time_hour=time[0][6:8]+'-'+time[0][12:20]       #时间
        time_list.append(time_hour)
        process_num=time[1].split('样本子程序号')
        process_num=process_num[1].split(' ')           #程序号
        process_list.append(process_num[0])
        mean_num=process_num[-1].split('当前均值')
        mean_list.append(mean_num[-1])                     #均值
    var_process=sorted(list(set(process_list)))        #去除重复值和排序
    if '2007' in var_process:
        var_process.remove('2007')
    if '7300' in var_process:                       #去除无效的波形
        var_process.remove('7300')
    plt.figure(figsize=(20,90))
    sum_process=len(var_process)             #看看有几个图
    for i,process in enumerate(var_process):
        mean_sums=[]
        time_display=[]
        for k,process_num in enumerate((process_list)):
            if process == process_num:
                mean_sums.append(mean_list[k])              #提取对的程序号的值
                time_display.append(time_list[k])           #同理,提取时间
        plt.subplot(sum_process,1,i+1)
        plt.plot(np.array(range(len(mean_sums))),np.array(mean_sums,dtype=float),label=str(process))   #numpy格式处理的快
        interval=int((len(mean_sums))/10)
        for m in range(10):
            plt.text(interval*m,np.array(mean_sums,dtype=float).min(),str(time_display[interval*m]))
        plt.text(0,np.array(mean_sums,dtype=float).max(),'numbers='+str(len(mean_sums)))
        plt.grid(axis="y",ls='--')
        plt.legend()
    plt.savefig('./'+name.split('.')[0]+'.png')
    print('have saved ...'+name.split('.')[0]+'.png')
    name = input('输入文件名:')
    if not os.path.isfile('./'+name):
        print('can not find')
    datacreate(name)

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值