El lenguaje Python escanea registros y cuenta
Se corrigió un error por el cual las filas de datos no válidos causaban un error
Se corrigió un error en el método de estadísticas mínimas
==== == ============= Aquí está log.py========
# -*- codificación. cp936 -*-
# ¡La frase anterior no debe eliminarse! Indica que la ruta china está codificada en GBK
import?datetime
# Módulo para el tiempo de procesamiento
def?sparse(target='log.txt'): tgfile = file(target, "r") event={} # el evento es un diccionario, la clave es el número del evento, el valor son los datos (se puede usar el anidamiento para expandir los datos) linelog = "No está vacío" mientras? linelog:
linelog = tgfile.readline()
data = linelog.split('?')
#Dividir una línea de datos en una lista por espacios
# print?data #testing
if?len(data) gt; 4: #fila de datos válida time1 = data] #Establezco el valor en una lista donde se encuentra cada elemento es una vez Registros sexuales, incluido) #Si ya existe un registro, agregue un nuevo registro después del registro if?data[5] ==="end:"?and?data[6][:2] ===" OK": p>
# Creo que no hay evento que termine sin comienzo, ¿verdad? ......
evento[datos[0]][-1][0]=0 #Se escribe el último registro: el evento ha finalizado
evento[datos [0]][-1][2]=time2 #Se escribe el último registro: la hora de finalización del registro #Si hay otro contenido que debe procesarse, agregue si el juicio aquí tgfile.close() regresa. event
def?analysis(target='log.txt'): event = sparse(target) #Llame al método disperso dispuesto anteriormente.
Para un procesamiento simple, realmente no hay necesidad de hacer esto... puramente por escalabilidad static = {} #Diccionario usado para resultados estadísticos (sus palabras clave son las mismas que las del evento) for? >
#Cada registro de evento
static[oneevent]=[0, 0, 0, 0, 0, -1]
#Inicializa las estadísticas de cada evento: [número de ocurrencias exitosas, número total de ocurrencias, tiempo total de ocurrencia, tiempo máximo de ocurrencia, tiempo mínimo de ocurrencia]
for?onerecord?in?event[oneevent]: #Cada evento Un registro estático[oneevent][0] = 1 #El número total de ocurrencias más uno si onerecord[0] == 0: #Eventos exitosos
static[oneevent][1] = 1
time_ delta = onerecord[ 2] - onerecord[1]
# El resultado del cálculo es tipo timedelta
inttimedelta = time_delta.days *24*60*60 time_delta.
#Convert time_delta a un número entero en segundos
if inttimedelta gt; static[oneevent][3]: static[oneevent][3] = inttimedelta #Valor estadístico máximo
if inttimedelta lt; [oneevent][4] o static[oneevent][4] lt; 0: static[oneevent][4] = inttimedelta #Valor mínimo estadístico
static[oneevent ][2] = inttimedelta return static
==================== debajo de log.txt============
# 1?0.0.0.0?[2007-06-12?23:27:08]?solicitud?begin:?OK?
#3?0.0.0.0?[2007 -06-12?23: 28:08]?request?begin:?fail
#1?0.0.0.0?[2007-06-12?23:37:08]?request?begin: ?OK?
#1?0.0.0.0?[2007-06-12?23:37:08]?solicitud?comenzar:?¿OK?
#1?2007- 06-12?23:37 :18]?solicitud?de?datos:?OK
#1?0.0.0.0?[2007-06-12?23:37:19]?recibió ?algunos?datos:?OK
#1?0.0.0.0?[2007-06-13? ?00:27:08]?request?end:?OK?
#2?0.0.0.0? [2007-06-13?00:37:08]?solicitud?begin:?OK
#2?0.0.0.0?[2007-06-13?00: 47:08]?solicitud? es
d:?OK?
¿sistema?ERROR?:reiniciar
Otra línea no válida
#1?0.0.0.0?[2007-06-13?23 :28:18]?solicitud?comenzar:?¿OK?
#7?0.0.0.0?[2007-06-13?23:28:18]?
#7 ?0.0.0.0?[2007-06-13?23:29:08]?solicitud?comenzar:?OK?
#7?0.0.0.0?[2007-06-13?23:30 :18]?request?end:?OK?
#4?0.0.0.0?[2007-06-13?23:30:18]?request?end:?OK?
#4?2007-06-13?23:33:08]?solicitud?comenzar:?¿OK?
#4?0.0.0.0?[2007-06-13?23:35 :23]?request?end:?OK?
#4?0.0.0.0?[2007-06-13?23:37:08]?request?begin:?OK?
#4?0.0.0.0?[2007-06-13?23:43:38]?solicitud?end:?OK?
#5?0.0.0.0?[2007-06- 13?23:47:08]?request?begin:?OK?
#1?0.0.0.0?[2007-06-13?23:57:48]?request?begin:?OK ?
#5?0.0.0.0?[2007-06-13?23:59:08]?request?end:?OK?
======= ============ El siguiente es el uso y la salida de ========
import?log
output = log.analysis ()
#o simplemente log.analysis()
============== salida = ========== = p>
{'#2': [1, 1, 600, 600, 600], '#1': [4, 1, 3000, 3000, 3000], '#7': [1 , 1, 70, 70, 70], '#5': [1, 1, 720, 720, 720], '#4': [2, 2, 525, 390.135]}
Decir Evento #1, el número total de veces que se genera['#1'][0]==4
El número de éxitos que se genera['#1'][1]=1
El número de fallas de salida['# 1'][0]-Salida['#1'][1]=3
Tiempo total de salida['#1'][2]== 3000 segundos
Tiempo promedio de salida['#1'][2]/salida['#1'][1]==3000/1=3000 segundos
Tiempo máximo salida['#1'][3] ==3000 segundos
Tiempo mínimo de salida['#1'][4]==3000 segundos
****Hay len(salida)==5 eventos de ID