2017-01-29 1 views
1

Je suis la structure de fichier journal suivante. Je veux connaître le temps de réponse maximum et vouloir imprimer le fichier journal qui a le temps de réponse le plus élevé (R.T) en utilisant python 2.7.11.Manipulation du fichier journal en utilisant python

La structure de mon fichier journal:

00.00.00.000 - - [dd/mm/yyyy:hr:mm:se +0800] GET Url HTTP/1.1 200 dataconsumed R.T 
00.00.00.000 - - [dd/mm/yyyy:hr:mm:se +0800] GET Url HTTP/1.1 200 dataconsumed R.T 
00.00.00.000 - - [dd/mm/yyyy:hr:mm:se +0800] GET Url HTTP/1.1 200 dataconsumed R.T 

code occasion:

file =open(r"log.txt","r") 
for line in file: 
line_array = line.split(" ") 
print line_array[10] 

SORTIE:

R.T 
R.T 
R.T 

Un Jusqu'à présent, je pouvais imprimer tout le temps de réponse à partir du fichier journal. Je n'ai pas pu obtenir le temps de réponse le plus élevé (R.T). Aidez-moi à trouver le temps de réponse le plus élevé avec l'ensemble du fichier journal imprimé en sortie.

Répondre

0

Vous devriez obtenir le temps de réponse réel (R.T) qui sera dans l'étiquette R.T (je suppose), enregistrez-le et ensuite en obtenir le maximum. Donc, votre code devrait ressembler à:

file = open(r"log.txt","r") 
rts = [] 
for line in file: 
    line_array = line.split(" ") 
    rts.append(float(line_array[10])) 

#Now find max 
max_rt = max(rts) 
print "Max R.T is :", max_rt 
file.close() 
0

Commencez avec une liste vide AVANT la boucle

response_times = [] 

Au lieu d'imprimer tout l'élément de ligne, ajoutez à cette liste dans la boucle:

response_times.append(line_array[10]) 

Enfin, imprimez le maximum APRES/en dehors de la boucle for:

print max(response_times) 
1

Rester proche de votre propre code et en supposant qu'il donne en effet la sortie que vous décrivez:

file =open(r"log.txt","r") 
highest = -1 
for line in file: 
    line_array = line.split(" ") 
    highest = max (highest, float (line_array[10])) 

print (highest) 
file.close()