import os, sys, re connexions = {} fd = os.popen ('last') # l'expression régulière est compilée pour plus d'efficacité expr = re.compile("^([^ ]+)[^A-Z]+... +(... +\d+).*(\d\d):(\d\d)\)") for ligne in fd : resultat = re.search(expr, ligne) if resultat : login = resultat.group(1) date = resultat.group(2) heures = resultat.group(3) minutes = resultat.group(4) duree = int(heures)*60 + int(minutes) if login in connexions : if date in connexions[login] : nv_nb_connex = connexions[login][date][0] + 1 nv_duree = connexions[login][date][1] + duree connexions[login][date] = [nv_nb_connex, nv_duree] else : connexions[login][date] = [1, duree] else : connexions[login] = {} connexions[login][date] = [1, duree] fd.close() logins = connexions.keys() logins.sort() # pour présenter les logins dans l'ordre alphabétique for login in logins : print("\t", login, "s'est connecté les :") for date in connexions[login] : heures = connexions[login][date][1] / 60 minutes = connexions[login][date][1] % 60 print("\t\t", date, ":", connexions[login][date][0], "fois (", heures, ":", minutes, ")") print()