Python is beautiful (again)

J’aime bien Python. Mon utilisation de ce langage est fortement axé sur l’écriture de petits scripts pour décortiquer les traces en console d’autres d’applications. Et pour ça, Python est très fort. Déjà parce qu’on peut commencer dans l’interpréteur interactif et ensuite mettre le code dans un fichier *.py pour le conserver. Ensuite, parce qu’il y a des écritures très efficaces pour faire cela. Dans cet article, je vous montre mon dernier script pour dire une nouvelle fois que « Python is beautiful ».

Pour commencer, voici la trace d’exécution. Il a appairage de deux périphériques au début, puis deux threads font des ON et des OFF, tandis qu’un troisième thread traite les communications et affiche les temps de traitement :

0
SwitchDeviceListener.deviceRegistered()
OFF
SwitchDeviceListener.deviceRegistered()
OFF
110
78
ON
390
ON
78
OFF
437
OFF
79
ON
421
ON
94
OFF
421
OFF
95
ON
405
[...]

L’objectif ici est de trouver les temps minimum, maximum et moyen. Pour cela, les listes marchent à merveille :

  • On crée une liste avec toutes les lignes du fichier.
  • On en dérive une liste ne contenant que les éléments qui ne sont pas dans une liste d’éléments à exclure grâce à not in.
  • On transforme les éléments de type string en int.
  • On utilise les opérateurs adaptés pour récupérer les valeurs recherchées.
from statistics import mean, median

# Read file content
f = open("C:\\Users\\pgradot\\Desktop\\data.txt", "r")
lines = f.readlines()
f.close()

# Clean content
to_exclude = ["SwitchDeviceListener.deviceRegistered()\n", "ON\n",  "OFF\n"]
cleaned = [line for line in lines if line not in to_exclude]
print(cleaned)

# Convert to numbers
numbers = list(map(int, cleaned))
print(numbers)

# Print statistics
print("Min = ", min(numbers))
print("Max = ", max(numbers))
print("Mean = ", mean(numbers))
print("Median = ", median(numbers))

Le script nous donne les valeurs recherchées :

Min =  0
Max =  578
Mean =  272.37404580152673
Median =  235.0

Le module statistics a été ajouté en version 3.4 de Python.

C’est beau, on est contents 🙂

Publicités

2 Réponses

  1. Joli travail

    J'aime

    15 décembre 2014 à 11:00

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s