Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

python 2.6 et sys.exit

12 views
Skip to first unread message

Kobayashi

unread,
Oct 16, 2009, 10:33:10 AM10/16/09
to
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.

Alain Ketterlin

unread,
Oct 16, 2009, 11:39:33 AM10/16/09
to
Kobayashi <koba...@netcourrier.com> 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.

Kobayashi

unread,
Oct 16, 2009, 11:11:21 AM10/16/09
to
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.

Alain Ketterlin

unread,
Oct 16, 2009, 12:11:07 PM10/16/09
to
Kobayashi <koba...@netcourrier.com> 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.

Kobayashi

unread,
Oct 16, 2009, 12:46:09 PM10/16/09
to
Alain Ketterlin a écrit :

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.

Kobayashi

unread,
Oct 16, 2009, 12:49:26 PM10/16/09
to
Alain Ketterlin a écrit :

Merci Alain !! C'est parfait !

0 new messages