J'ai un dossier contenant des fichiers de configuration : config1.txt, config2.txt, config3.txt, .... Ces fichiers sont générés par l'utilisateur via une page PHP.
Chacun de ces fichiers (que nous appellerons scénario) contient des données à traiter par un script python. Ces données sont du genre :
Eclairage # Type de gestion
08:00 # Heure d'allumage
Séjour # Localisation
Le script python exécute :
- 1 scan du dossier afin de déterminer combien de scénarios ont été saisis par l'utilisateur,
- Attribut l'ensemble des lignes à une liste soit : NomDeLaListe1 [Eclairage, 08:00, Séjour]
- Puis exécute les fonctions programmées en lisant NomDeLaListe1[0], NomDeLaListe1[1], NomDeLaListe1[2]
Aujourd'hui, mon sript fonctionne car programmé en appelant 0, 1, 2, ...
Si j'avais à modifier la composition du fichier de configuration par exemple en ajoutant une heure d'extinction je le ferais comme suivant
Eclairage # Type de gestion
08:00 # Heure d'allumage
22:00 # Heure d'extinction (c'est un peu c.. de l'avoir oublié !)
Séjour # Localisation
et donc comme tu l'auras compris, même sans lancer le script, BUG. Evidemment la solution de base serait de placer l''heure d'extinction après la localisation mais ça peut vite devenir compliqué à la relecture/réécriture.
Mon premier problème été donc de générer des variables automatiquement pour réceptionner l'ensemble de données des scripts (5 fichiers config donc 5 listes, 100 fichiers config donc 100 listes, 1000...) J'ai résolu temporairement le problème en créant un dictionnaire en suivant le schéma :
"ligne" étant créée par un "ligne = fichier.readlines()".
Ça marche, je génère donc des listes par l’intermédiaire d'un dictionnaire. Oups's j'ai dis "liste", les valeurs sont donc appelées avec leur numéro. Quid de mon "22:00" qui doit être ajouté !
Comme tu me l'as confirmé, python ne sait pas générer des noms de variable automatiquement, je pense donc créé un dictionnaire dans un dictionnaire et modifier mes fichiers config sous cette forme :
fonction:Eclairage
heurematin:08-00
heuresoir:22-00
localisation:Séjour
Lire ces fichiers dans mon script, faire un split et utiliser le 1er terme comme clé et le second comme valeur. Je n'aurais donc plus de problème à l'ajout d'une valeur.
Pour compliquer un peu la sauce, mon script vérifie que les autres scénarios ne sont pas associer avec celle en cours (en utilisant localisation). Par exemple si jamais un des scénarios été :
fonction:TV
allumage:17-00
localisation:Séjour
Je pourrais éventuellement considérer que puisque ces 2 éléments sont localisés au même endroit, un action commune peut être intéressante dans le créneau commun (comme, par exemple, mettre de la bière au frais).
Toutes mes excuses, c'est un peu long. J’espère que c'est un peu clair !