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

python 2.6 et sys.exit

4 réponses
Avatar
Kobayashi
Bonjour à tous,

Soit le fichier pb_exit.py qui contient deux lignes :

import sys
sys.exit(0)

Pour python < 2.6 :

python -i pb_exit.py

sort immédiatement !

Avec python 2.6 :

python -i pb_exit.py
Traceback (most recent call last):
File "pb_exit.py", line 2, in <module>
sys.exit(0)
SystemExit: 0
>>>

Cela semble effectivement le bon comportement
puisque l'on a demandé "-i" ... Mais je cherche
un moyen de faire sortir de l'interpréteur depuis
le fichier pb_exit.py ... et je ne trouve pas.

Merci de votre aide,


K.

4 réponses

Avatar
Kobayashi
Kobayashi a écrit :
Bonjour à tous,

Soit le fichier pb_exit.py qui contient deux lignes :

import sys
sys.exit(0)



try:
sys.exit(0)
except SystemExit:
import os, signal
os.kill(os.getpid(), signal.SIGQUIT)
pass

Mais :

1. Ça écrit : "Quit"
2. C'est pas portable
3. Qu'est que c'est moche !!

K.


Pour python < 2.6 :

python -i pb_exit.py

sort immédiatement !

Avec python 2.6 :

python -i pb_exit.py
Traceback (most recent call last):
File "pb_exit.py", line 2, in <module>
sys.exit(0)
SystemExit: 0
>>>

Cela semble effectivement le bon comportement
puisque l'on a demandé "-i" ... Mais je cherche
un moyen de faire sortir de l'interpréteur depuis
le fichier pb_exit.py ... et je ne trouve pas.

Merci de votre aide,


K.


Avatar
Alain Ketterlin
Kobayashi writes:

import sys
sys.exit(0)

Pour python < 2.6 :

python -i pb_exit.py

sort immédiatement !

Avec python 2.6 :

python -i pb_exit.py
Traceback (most recent call last):
File "pb_exit.py", line 2, in <module>
sys.exit(0)
SystemExit: 0








Cela semble effectivement le bon comportement puisque l'on a demandé
"-i" ... Mais je cherche un moyen de faire sortir de l'interpréteur
depuis le fichier pb_exit.py ... et je ne trouve pas.



J'ai l'impression que le but de -i est justement de te permettre
d'utiliser l'interpréteur après l'exécution du script (le co mportement
pre-2.6 est incorrect de ce point de vue). Je ne comprends donc pas ce
que tu veux : passer en interactif ou quitter tout avec exit ? Si tu
veux passer en interactif dans certains cas mais pas dans d'autres, j'ai
peur que ce ne soit pas prévu, -i étant justement prévu pour toujours te
donner la main.

-- Alain.
Avatar
Alain Ketterlin
Kobayashi writes:

try:
sys.exit(0)
except SystemExit:
import os, signal
os.kill(os.getpid(), signal.SIGQUIT)
pass



Je ne vois toujours pas à quoi cela peut être utile, mais, au cas où,
essaie os._exit(0) au lieu de sys.exit(0)

-- Alain.
Avatar
Kobayashi
Alain Ketterlin a écrit :
Kobayashi writes:

import sys
sys.exit(0)

Pour python < 2.6 :

python -i pb_exit.py

sort immédiatement !

Avec python 2.6 :

python -i pb_exit.py
Traceback (most recent call last):
File "pb_exit.py", line 2, in <module>
sys.exit(0)
SystemExit: 0
Cela semble effectivement le bon comportement puisque l'on a demandé
"-i" ... Mais je cherche un moyen de faire sortir de l'interpréteur
depuis le fichier pb_exit.py ... et je ne trouve pas.



J'ai l'impression que le but de -i est justement de te permettre
d'utiliser l'interpréteur après l'exécution du script (le comportement
pre-2.6 est incorrect de ce point de vue). Je ne comprends donc pas ce
que tu veux : passer en interactif ou quitter tout avec exit ? Si tu
veux passer en interactif dans certains cas mais pas dans d'autres, j'ai
peur que ce ne soit pas prévu, -i étant justement prévu pour toujours te
donner la main.

-- Alain.



Bonjour Alain,

J'ai un programme prog.py qui lance plein de serveurs (corba)
et qui fait plein de choses super bien ... On le lance avec -i
pour pouvoir, pendant la phase interactive, interagir avec les
serveurs, en lancer d'autres, ...

Lorsque l'utilisateur quitte l'interpréteur, tout s'éteint.

Pour éviter que l'utilisateur tape : python -i prog.py [args]
on a créé un alias prog = "python -i prog.py"

Pour avoir les options possibles de prog, l'utilisateur tape
donc prog -h ... le code code traite les arguments en utilisant
optparse, le module optparse voie "-h" et lance sys.exit(0).

Jusque maintenant (python < 2.6), cela suffisait à sortir
de l'interpréteur ... plus maintenant.

Voila l'explication de la demande ...

K.