Bonsoir,

je viens de créer une fonction qui
1) demande d'entrer 6 données afin d'y former une liste
2) ajoute cette liste dans un fichier d'entré de données
3) sauvegarde la 3eme valeur de ligne afin d'y créer un fichier txt avec ce nom (si le fichier en question n'existe pas déjà)
4) supprime la 3ème, 4ème et 5ème valeure de la liste
5) joint les élément restants de la liste en une nouvelle liste et ajoute cette nouvelle liste dans le fichier créé à partir de l'element sauvegardé


En admetant que je rajoute plusieurs liste dans le fichier d'entré ou dans les différents fichier créé, je voudrais que ces listes soient triées en fonction de la date (élément 1 de la liste) et de l'heure (élément 2 de la liste)
date est au format jj/mm/aaaa
heure est au format hh/mm


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
 
 
def ajout_listes(fichie_source):
    # Demande à l'utilisateur de rentrer la date, l'heure, l'importance, l'événement, act, prévue et précédent
    date = input("Entrez la date (jj/mm/aaaa) : ")
    heure = input("Entrez l'heure (hh:mm) : ")
    devise = input("Entrez la devise : ")
    importance = input("Entrez l'importance (1 à 3) : ")
    evenement = input("Entrez l'événement : ")
    act = input("Entrez la valeure actuelle : ")
    prevue = input("Entrez la valeure prévue : ")
    precedent = input("Entrez la valeure précédente : ")
 
    # Création de la liste à partir des données entrées par l'utilisateur
    new_list = [date, heure, devise, importance, evenement, act, prevue, precedent]
    ligne = '   '.join(new_list)
    with open(fichie_source, 'a') as f_s:
        # Écrivez la nouvelle ligne dans le fichier
        f_s.write(ligne + '\n')
 
    # Recuperer la lettre correspondant au fichier
    even = new_list[4]
 
    # Enlever le champs "devise", "importance", et "evenement" de la liste
    del new_list[2]
    del new_list[2]
    del new_list[2]
 
    # Réassemblez la ligne en utilisant join
    new_line = ' '.join(new_list)
 
    # Ouvrez le fichier 'evenement' en mode 'a'
    with open(even + '.txt', 'a') as f_e:
        # Écrivez la nouvelle ligne dans le fichier
        f_e.write(new_line + '\n')
 
 
ajout_listes('essai ajouter listes.txt')
le fichier 'essai ajouter listes.txt' contient

15/02/2023 10:30 jpy 3 ploi 15 12 14
14/05/2024 20:30 jpy 2 ploi 15 16 14
25/06/2024 20:30 jpy 3 ploi 20 21 23
01/01/2025 23:10 jpy 3 ploi 20 30 40
20/04/2024 20:15 jpy 2 ploi 14 25 36
02/03/2026 20:10 jpy 3 ploi 20 30 10
02/02/2026 20:30 jpy 2 ploi 15 25 35
04/04/2027 20:35 jpy 1 ploi 51 52 53
03/03/2023 20:30 jpy 2 ploi 25 14 14

J'ai beau chercher pendant des heures, je n'arrive pas à faire en sorte que les listes sortent triées an fonction de la date et de l'heure les plus récents en haut.
Même avec ce bout de code à la fin ça ne donne rien.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
 
    # Lecture du contenu du fichier 'even'
    with open(even + '.txt', 'r') as f_e:
        lines = f_e.readlines()
    # trier les lignes en fonction de la date et de l'heure
    lines = sorted(lines, key=lambda x: datetime.strptime(x.split()[0] + ' ' + x.split()[1], '%d/%m/%Y %H:%M'))
    # Réécrire les lignes triées dans le fichier
    with open(even + '.txt', 'w') as f_e:
        f_e.writelines(lines)
merci de votre aide