1
- # -*- coding: utf-8 -*-
2
1
"""Script pour récupérer les données d'un fichier log culvert
3
2
4
3
Description détaillée:
25
24
CULVERT_FILE_PATH = "culvert_logfile.txt"
26
25
###############################################################################
27
26
28
- # On déclare un dictionnaire des paramètres qu'on
29
- # va stocker. Chaque "key" du dictionnaire contient
30
- # une liste vide. On a pour objectif d'ajouter les
31
- # informations qu'on trouve dans le fichier à
32
- # chacune de ces listes.
27
+ # Indique visuellement le départ de l'exécution du script.
28
+ print ("Starting..." )
29
+
30
+ # On déclare un dictionnaire des paramètres qu'on va stocker. Chaque "key" du
31
+ # dictionnaire contient une liste vide. On a pour objectif d'ajouter les
32
+ # informations qu'on trouve dans le fichier à chacune de ces listes.
33
33
culvert_data = {
34
34
"branch" : [],
35
35
"name" : [],
41
41
"upstream_invert" : []
42
42
}
43
43
44
- # On ouvre le fichier en utilisant le keyword 'with'
45
- # et la fonction 'open' à laquelle on passe le chemin
46
- # du fichier et l'argument "r" (read) pour signifier qu'on
47
- # souhaite uniquement lire le fichier.
48
- # Utiliser 'with' et 'open' garantie que le fichier ouvert
49
- # sera correctement fermé même si une erreur survient
50
- # lorsqu'on travaille avec le fichier ouvert.
51
- with open (CULVERT_FILE_PATH , "r" ) as f :
52
- # On crée un compteur qu'on va incrémenter
53
- # à chaque fois qu'on va trouver un *culvert*
54
- # dans le fichier texte.
44
+ # On ouvre le fichier en utilisant le keyword 'with' et la fonction 'open' à
45
+ # laquelle on passe le chemin du fichier et l'argument "r" (read) pour
46
+ # signifier qu'on souhaite uniquement lire le fichier. Utiliser 'with' et
47
+ # 'open' garantit que le fichier ouvert sera correctement fermé même si une
48
+ # erreur survient lorsque le code est exécuté une fois le fichier ouvert.
49
+ # On précise le type d'encodage car si le script est utilisé sur une autre
50
+ # plateforme, l'encodage par défaut pourrait être différent.
51
+ with open (CULVERT_FILE_PATH , "r" , encoding = "utf-8" ) as f :
52
+ # On crée un compteur qu'on va incrémenter à chaque fois qu'on va trouver
53
+ # un *culvert* dans le fichier texte.
55
54
culvert_count = 0
56
55
# On itère au travers de toutes les lignes du fichier.
57
56
for line in f :
58
- # line réfère maintenant à la ligne en cours de lecture.
59
- # Il s'agit d'un objet `string`. Attention, il se
60
- # termine à chaque fois par "\n" qui est un caractère
61
- # spécial représentant un saut de ligne.
57
+ # line réfère maintenant à la ligne en cours de lecture. Is'agit d'un
58
+ # objet `string`. Attention, il se termine à chaque fois par "\n" qui
59
+ # est un caractère spécial représentant un saut de ligne.
62
60
63
- # On incrémente le compteur si le texte "START CULVERT"
64
- # se trouve dans la ligne en cours de lecture
61
+ # On incrémente le compteur si le texte "START CULVERT" se trouve dans
62
+ # la ligne en cours de lecture.
65
63
if "START CULVERT" in line :
66
64
culvert_count += 1
67
65
68
- # On vérifie si la ligne en cours de lecture démarre
69
- # part le texte "Culvert_branch".
66
+ # On vérifie si la ligne en cours de lecture démarre part le
67
+ # texte "Culvert_branch".
70
68
if line .startswith ("Culvert_branch" ):
71
- # Si oui, on enlève les éventuels espaces blancs
72
- # et caractères spéciaux ("\n", "\t") qui pourrait
73
- # se trouver au début et/ou à la fin --> strip()
74
- # Cette méthode retourne un nouvel objet *string*
75
- # On sépare ensuite la ligne suivant le délimiteur
76
- # " = ". --> split(" = "). Cette méthode retourne
77
- # une *list* de *strings*. Le deuxième et dernier
78
- # élément de cette *list* correspond au nom de
79
- # la branche. On y accède avec [1].
80
- # Finalement, on enlève les apostrophes à la fin
81
- # et au début du nom de la branche --> strip("'")
82
- # Cette méthode retourne un nouvel objet *string*
83
- # auquel est associé le nom branch.
69
+ # Si oui, on enlève les éventuels espaces blancs et caractères
70
+ # spéciaux ("\n", "\t") qui pourrait se trouver au début et/ou à la
71
+ # fin --> strip(). Cette méthode retourne un nouvel objet *string*
72
+ # On sépare ensuite la ligne suivant le
73
+ # délimiteur " = ". --> split(" = "). Cette méthode retourne une
74
+ # *list* de *strings*. Le deuxième et dernier élément de cette
75
+ # *list* correspond au nom de la branche. On y accède avec [1].
76
+ # Finalement, on enlève les apostrophes à la fin et au début du nom
77
+ # de la branche --> strip("'")
78
+ # Cette méthode retourne un nouvel objet *string* auquel est
79
+ # associé le nom branch.
84
80
branch = line .strip ().split (" = " )[1 ].strip ("'" )
85
- # On ajoute le nom de la branche à la liste de la
86
- # key "branch" du dictionnaire des sorties.
81
+ # On ajoute le nom de la branche à la liste de la key "branch" du
82
+ # dictionnaire des sorties.
87
83
culvert_data ["branch" ].append (branch )
88
84
89
- # On vérifie si la ligne en cours de lecture démarre
90
- # part le texte "Culvert_name".
85
+ # On vérifie si la ligne en cours de lecture démarre part le
86
+ # texte "Culvert_name".
91
87
if line .startswith ("Culvert_name" ):
92
- # On stocke dans le dictionnaire le nom du culvert
93
- # en cours de lecture.
88
+ # On stocke dans le dictionnaire le nom du culvert en cours de
89
+ # lecture.
94
90
name = line .strip ().split (" = " )[1 ].strip ("'" )
95
91
culvert_data ["name" ].append (name )
96
- # On vérifie si la ligne en cours de lecture démarre
97
- # part le texte "Culvert_params".
92
+ # On vérifie si la ligne en cours de lecture démarre part le
93
+ # texte "Culvert_params".
98
94
if line .startswith ("Culvert_params" ):
99
- # On récupère l'ensemble des paramètres dans un objet
100
- # *list* nommé params
95
+ # On récupère l'ensemble des paramètres dans un objet *list*
96
+ # nommé params
101
97
params = line .strip ().split (" = " )[1 ].split ("," )
102
- # On unpack chacun des éléments de la liste (6)
103
- # On a maintenant 6 nouveaux noms à disposition
104
- # pour référencer les paramètres du culvert
98
+ # On unpack chacun des éléments de la liste (6). On a maintenant
99
+ # 6 nouveaux noms à disposition pour référencer les paramètres
100
+ # du culvert.
105
101
t , d , l , m , uc , ui = params
106
- # On ajoute les paramètres à leur liste dans le
107
- # dictionnaire.
102
+ # On ajoute les paramètres à leur liste dans le dictionnaire.
108
103
culvert_data ["type" ].append (t )
109
104
culvert_data ["diameter" ].append (d )
110
105
culvert_data ["length" ].append (l )
118
113
# Un DataFrame est créé à partir de toutes les données du dictionnaires.
119
114
df = pd .DataFrame (culvert_data )
120
115
# Les données extraites sont enregistrées dans un fichier csv.
121
- # index=False évite d'écrire l'index du DataFrame dans le fichier,
122
- # celui-ci n'étant pas utile ici.
116
+ # index=False évite d'écrire l'index du DataFrame dans le fichier, celui-ci
117
+ # n'étant pas utile ici.
123
118
df .to_csv ("culvert_data.csv" , index = False )
119
+
120
+ # Indique visuellement que le script s'est bien executé jusqu'au bout.
121
+ print ("Done!" )
0 commit comments