Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Interruption script python

3 réponses
Avatar
Alain BARTHE
Bonsoir,

J'ai écrit un scipt Python qui scrute une arborescence de fichiers, pour
rechercher des dépendances entre fichiers.

Pour chaque journée depuis 2000/01/01 à aujourd'hui, il doit vérifier si
des fichiers de données sources d'une application sont plus récents que
les fichiers destinations (fichiers traités par l'application).

Il est constitué d'une boucle principale utilisant le module datetime
pour itérer sur les dates, de la fonction glob.glob() pour rechercher
les fichiers pour cette date, et de os.path.getmtime() pour comparer les
dates de maj des fichiers.

Mon problème est que ce script est assez long (2/3 minutes) et que je
n'arrive pas à l'interrompre par un Ctrl-C.

Y a-t-il un moyen sous Python pour modifier la prise en compte du Ctrl-C
afin qu'il plante mon application ?

Est-il éventuellement possible d'intercepter proprement cette interruption ?

Pour info, je suis Python 2.5 sous Solaris 9 et Linux FC6.

3 réponses

Avatar
Alain BARTHE
Alain BARTHE a écrit :
Bonsoir,

J'ai écrit un scipt Python qui scrute une arborescence de fichiers, pour
rechercher des dépendances entre fichiers.

Pour chaque journée depuis 2000/01/01 à aujourd'hui, il doit vérifier si
des fichiers de données sources d'une application sont plus récents que
les fichiers destinations (fichiers traités par l'application).

Il est constitué d'une boucle principale utilisant le module datetime
pour itérer sur les dates, de la fonction glob.glob() pour rechercher
les fichiers pour cette date, et de os.path.getmtime() pour comparer les
dates de maj des fichiers.

Mon problème est que ce script est assez long (2/3 minutes) et que je
n'arrive pas à l'interrompre par un Ctrl-C.

Y a-t-il un moyen sous Python pour modifier la prise en compte du Ctrl-C
afin qu'il plante mon application ?

Est-il éventuellement possible d'intercepter proprement cette
interruption ?

Pour info, je suis Python 2.5 sous Solaris 9 et Linux FC6.




Problème résolu.

J'ai regardé la doc de la fonction signal.signal() qui permet
d'intercepter les signaux Unix comme le Ctrl-C, et il y est dit que le
Ctrl-C génère bien une exception de type KeyboardInterrupt.

Mon problème provenait de mon script qui faisait une mauvaise gestion
des exceptions, et mon programme ne s'interrompait pas.
Avatar
Bruno Desthuilliers
Alain BARTHE a écrit :
Alain BARTHE a écrit :
Bonsoir,

J'ai écrit un scipt Python qui scrute une arborescence de fichiers,
pour rechercher des dépendances entre fichiers.

Pour chaque journée depuis 2000/01/01 à aujourd'hui, il doit vérifier
si des fichiers de données sources d'une application sont plus récents
que les fichiers destinations (fichiers traités par l'application).

Il est constitué d'une boucle principale utilisant le module datetime
pour itérer sur les dates, de la fonction glob.glob() pour rechercher
les fichiers pour cette date, et de os.path.getmtime() pour comparer
les dates de maj des fichiers.

Mon problème est que ce script est assez long (2/3 minutes) et que je
n'arrive pas à l'interrompre par un Ctrl-C.

Y a-t-il un moyen sous Python pour modifier la prise en compte du
Ctrl-C afin qu'il plante mon application ?

Est-il éventuellement possible d'intercepter proprement cette
interruption ?

Pour info, je suis Python 2.5 sous Solaris 9 et Linux FC6.




Problème résolu.

J'ai regardé la doc de la fonction signal.signal() qui permet
d'intercepter les signaux Unix comme le Ctrl-C, et il y est dit que le
Ctrl-C génère bien une exception de type KeyboardInterrupt.

Mon problème provenait de mon script qui faisait une mauvaise gestion
des exceptions, et mon programme ne s'interrompait pas.



J'allais te répondre un truc du genre "il y a probablement un except
attrape-tout ne relançant pas l'exception dans ton code".
Avatar
Alain BARTHE
Bruno Desthuilliers a écrit :
Alain BARTHE a écrit :
Alain BARTHE a écrit :
Bonsoir,

J'ai écrit un scipt Python qui scrute une arborescence de fichiers,
pour rechercher des dépendances entre fichiers.

Pour chaque journée depuis 2000/01/01 à aujourd'hui, il doit vérifier
si des fichiers de données sources d'une application sont plus
récents que les fichiers destinations (fichiers traités par
l'application).

Il est constitué d'une boucle principale utilisant le module datetime
pour itérer sur les dates, de la fonction glob.glob() pour rechercher
les fichiers pour cette date, et de os.path.getmtime() pour comparer
les dates de maj des fichiers.

Mon problème est que ce script est assez long (2/3 minutes) et que je
n'arrive pas à l'interrompre par un Ctrl-C.

Y a-t-il un moyen sous Python pour modifier la prise en compte du
Ctrl-C afin qu'il plante mon application ?

Est-il éventuellement possible d'intercepter proprement cette
interruption ?

Pour info, je suis Python 2.5 sous Solaris 9 et Linux FC6.




Problème résolu.

J'ai regardé la doc de la fonction signal.signal() qui permet
d'intercepter les signaux Unix comme le Ctrl-C, et il y est dit que le
Ctrl-C génère bien une exception de type KeyboardInterrupt.

Mon problème provenait de mon script qui faisait une mauvaise gestion
des exceptions, et mon programme ne s'interrompait pas.



J'allais te répondre un truc du genre "il y a probablement un except
attrape-tout ne relançant pas l'exception dans ton code".



C'était exactement ça.