Créer un executable avec un JSON modifiable

OH -  
mamiemando Messages postés 33769 Date d'inscription   Statut Modérateur Dernière intervention   -

Bonjour,

J'ai développé un petit programme qui permet de modifier des seuils définis dans un fichier JSON.

Le problème étant qu'en créant un executable de ce programme, il ne prend pas en compte les changements dans le fichier JSON.

Je ne sais pas vraiment comment faire et n'ai pas trouvé de problème similaire sur internet.

Sauriez vous comment faire l'executable d'un programme python dans lequel on utilise un JSON qui est modifié ?

Merci pour vos réponses, si vous vaez besoins d'autres informations n'hesiter pas !

A voir également:

2 réponses

jee pee Messages postés 41510 Date d'inscription   Statut Modérateur Dernière intervention   9 715
 

Bonjour,

Si le fichier json embarqué ne peut être modifié, il faut peut être si les valeurs originales sont modifiées, les enregistrer dans un fichier local, qui au lancement du programme sera préalablement recherché avant le fichier embarqué.


0
mamiemando Messages postés 33769 Date d'inscription   Statut Modérateur Dernière intervention   7 878
 

Bonjour,

Une fois chargé en mémoire, le fichier JSON n'est plus consulté par le programme. Il faut donc qu'en cas de changement de ce fichier, ton programme le recharge explicitement.

La stratégie la plus naïve consiste à recharger (à chaque fois qu'une fonction en dépend) le fichier JSON. C'est un peu overkill surtout si les paramètres qu'il contient sont fréquemment utilisés.

L'idéal serait donc ne recharger le fichier JSON que quand celui-ci est modifié. Sous Linux, on utiliserait par exemple inotify pour que le programme soit averti en cas de changement du fichier (ce qui lui permettrait de ne le recharger qu'en cas de besoin). Il existe un paquet python inotify qui émule cette fonctionnalité (et donc visiblement, qui peut marcher pour d'autres systèmes, comme Windows).

Bonne chance

0
[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105
 

Salut mamiemando,

Je ne pense pas que ce paquet Python fonctionne sous Windows. Il semble être un wrapper pour inotify, qui ne fonctionne que sous Linux -avec un noyau 2.6 au moins).

Celui-ci a l'air cross-platform, par contre :

https://pythonhosted.org/watchdog/

1
mamiemando Messages postés 33769 Date d'inscription   Statut Modérateur Dernière intervention   7 878 > [Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention  
 

Je pense que si car si on regarde le code source on ne voit pas d'appel explicite à la commande inotify et on voit également dans ce fichier des instructions qui laissent penser que le paquet est susceptible de marcher sous windows (il n'y a pas de dll sous linux). Mais tu as peut-être raison...

Quoi qu'il en soit, tu as raison, watchdog est un choix plus sûr, car il est explicitement annoncé comme multi-plateforme.

0