Sortir de mon programme

Le
fred1599
Bonjour,

Mon programme fonctionne bien, seulement lorsque je propose
l'oprateur de continuer ou de quitter le programme; si on choisit de
le quitter le shell ne disparait pas, je suis donc oblig de cliquer
sur la croix.

J'ai essay avec la librairie os et la librairie sys mais pas moyen de
me sortir de la.

Merci par avance
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Jerome
Le #638442
wrote:
Bonjour,

Mon programme fonctionne bien, seulement lorsque je propose à
l'opérateur de continuer ou de quitter le programme; si on choisit de
le quitter le shell ne disparait pas, je suis donc obligé de cliquer
sur la croix.

J'ai essayé avec la librairie os et la librairie sys mais pas moyen de
me sortir de la.

Merci par avance




Bonjour,

quel shell reste actif ? python, windows, linux ?

Si tu lances ton script en ligne de commande depuis un shell c'est
normal qu'il ne soit pas quitté à la fin de la commande.


Jerome

fred1599
Le #638441
wrote:
Bonjour,

Mon programme fonctionne bien, seulement lorsque je propose à
l'opérateur de continuer ou de quitter le programme; si on choisit de
le quitter le shell ne disparait pas, je suis donc obligé de cliquer
sur la croix.

J'ai essayé avec la librairie os et la librairie sys mais pas moyen de
me sortir de la.

Merci par avance




Bonjour,

quel shell reste actif ? python, windows, linux ?

Si tu lances ton script en ligne de commande depuis un shell c'est
normal qu'il ne soit pas quitté à la fin de la commande.


Jerome


J'ai du mal m'exprimer,

L'utilisateur à deux possibilités
1)Continuer le programme
2)Quitter le programme

Si il quitte le programme, je voudrais qu'il quitte la fenetre du
programme

En fait la fonction sous linux, c'est 'exit', j'aimerais la simuler
dans mon programme, afin de faire disparaitre cette fenetre


Méta-MCI \(MVP\)
Le #638440
Salut !


En fait, la réponse de Jérome était pertinente.


Pour nunux, je ne sais point.

Pour windows, tu peux créer un petit batch (par exemple
"p.bat"), contenant :
@echo off
if EXIST c:exit.bat del c:exit.bat
%1.py %2 %3 %4 %5 %6 %7 %8 %9
if EXIST c:exit.bat call c:exit.bat

Dans ton script Python, au moment de sortir, tu fais un truc
du genre :
open("c:\exit.bat",'w').write('exit')
sys.exit()

(si l'on veut sortir du script Python, sans fermer le shell,
il suffit d'omettre la première ligne)


ça s'utilise de la façon suivante (exemples) :
- pour lancer le script "toto.py", il faut taper :
p toto [Entrer]
- pour lancer le script "titi.py aaa bbb ccc", il faut
taper :
p toto aaa bbb ccc [Entrer]

(9 paramètres sont possible, avec ce batch)




@+

Michel Claveau
Jerome
Le #638439
wrote:
wrote:
Bonjour,

Mon programme fonctionne bien, seulement lorsque je propose à
l'opérateur de continuer ou de quitter le programme; si on choisit de
le quitter le shell ne disparait pas, je suis donc obligé de cliquer
sur la croix.

J'ai essayé avec la librairie os et la librairie sys mais pas moyen de
me sortir de la.

Merci par avance



Bonjour,

quel shell reste actif ? python, windows, linux ?

Si tu lances ton script en ligne de commande depuis un shell c'est
normal qu'il ne soit pas quitté à la fin de la commande.


Jerome


J'ai du mal m'exprimer,

L'utilisateur à deux possibilités
1)Continuer le programme
2)Quitter le programme

Si il quitte le programme, je voudrais qu'il quitte la fenetre du
programme

En fait la fonction sous linux, c'est 'exit', j'aimerais la simuler
dans mon programme, afin de faire disparaitre cette fenetre



http://docs.python.org/lib/module-sys.html

exit([arg])
Exit from Python. This is implemented by raising the SystemExit
exception, so cleanup actions specified by finally clauses of try
statements are honored, and it is possible to intercept the exit attempt
at an outer level. The optional argument arg can be an integer giving
the exit status (defaulting to zero), or another type of object. If it
is an integer, zero is considered ``successful termination'' and any
nonzero value is considered ``abnormal termination'' by shells and the
like. Most systems require it to be in the range 0-127, and produce
undefined results otherwise. Some systems have a convention for
assigning specific meanings to specific exit codes, but these are
generally underdeveloped; Unix programs generally use 2 for command line
syntax errors and 1 for all other kind of errors. If another type of
object is passed, None is equivalent to passing zero, and any other
object is printed to sys.stderr and results in an exit code of 1. In
particular, sys.exit("some error message") is a quick way to exit a
program when an error occurs.


Mais à mon avis pour ton problème il faudrait mieux que tu revoies ta
conception, ça me semble être un besoin étrange de vouloir quitter son
programme de cette façon.



Jerome



jean-michel bain-cornu
Le #638438
Bonjour,
L'utilisateur à deux possibilités
1)Continuer le programme
2)Quitter le programme

Si il quitte le programme, je voudrais qu'il quitte la fenetre du
programme

En fait la fonction sous linux, c'est 'exit', j'aimerais la simuler
dans mon programme, afin de faire disparaitre cette fenetre



Je n'ai pas testé, mais un truc qui vient à l'esprit, c'est de faire un
os.system('kill -9 pid_du_shell')
C'est un peu crade, mais imparable.

A+
jm

Jerome
Le #638253
jean-michel bain-cornu wrote:
Bonjour,
L'utilisateur à deux possibilités
1)Continuer le programme
2)Quitter le programme

Si il quitte le programme, je voudrais qu'il quitte la fenetre du
programme

En fait la fonction sous linux, c'est 'exit', j'aimerais la simuler
dans mon programme, afin de faire disparaitre cette fenetre



Je n'ai pas testé, mais un truc qui vient à l'esprit, c'est de faire un
os.system('kill -9 pid_du_shell')
C'est un peu crade, mais imparable.

A+
jm



os.system('kill -9 %d' % os.getppid())
ou
os.kill(9, os.getppid())


Ca ne marche que sous un vrai os bien sûr :)


Jerome
Le #638252
Jerome wrote:
jean-michel bain-cornu wrote:
Bonjour,
L'utilisateur à deux possibilités
1)Continuer le programme
2)Quitter le programme

Si il quitte le programme, je voudrais qu'il quitte la fenetre du
programme

En fait la fonction sous linux, c'est 'exit', j'aimerais la simuler
dans mon programme, afin de faire disparaitre cette fenetre



Je n'ai pas testé, mais un truc qui vient à l'esprit, c'est de faire
un os.system('kill -9 pid_du_shell')
C'est un peu crade, mais imparable.

A+
jm



os.system('kill -9 %d' % os.getppid())
ou
os.kill(9, os.getppid())


le lecteur attentif aura bien sûr corrigé en
os.kill(os.getppid(), 9)
ou même encore mieux en
os.kill(os.getppid(), signal.SIGKILL)



fred1599
Le #638251
Jerome wrote:
jean-michel bain-cornu wrote:
Bonjour,
L'utilisateur à deux possibilités
1)Continuer le programme
2)Quitter le programme

Si il quitte le programme, je voudrais qu'il quitte la fenetre du
programme

En fait la fonction sous linux, c'est 'exit', j'aimerais la simuler
dans mon programme, afin de faire disparaitre cette fenetre



Je n'ai pas testé, mais un truc qui vient à l'esprit, c'est de fai re
un os.system('kill -9 pid_du_shell')
C'est un peu crade, mais imparable.

A+
jm



os.system('kill -9 %d' % os.getppid())
ou
os.kill(9, os.getppid())


le lecteur attentif aura bien sûr corrigé en
os.kill(os.getppid(), 9)
ou même encore mieux en
os.kill(os.getppid(), signal.SIGKILL)


Alors la je ne comprend pas ou plus rien!!!

Pourquoi cela vous semble-t-il bizarre de quitter le programme et
revenir sur nunux

J'explique le déroulement avec plus de précision.

On va dire un programme de pourcentage

1) J'execute le programme, ma fenetre s'ouvre
2)J'applique mon programme, fait mumuse avec mes pourcentages
3)J'ai 2 solutions proposées par le programme, soit continuer, soit
quitter
4)Je quitte mon programme, la fenetre se ferme et je suis de nouveau
sur mon OS

Je ne vois pas le mal à fermer cette fenetre, et la difficulté à le
faire

Là il faut m'expliquer

Fred




Jerome
Le #638250
-- snip --

Alors la je ne comprend pas ou plus rien!!!

Pourquoi cela vous semble-t-il bizarre de quitter le programme et
revenir sur nunux

J'explique le déroulement avec plus de précision.

On va dire un programme de pourcentage

1) J'execute le programme, ma fenetre s'ouvre
2)J'applique mon programme, fait mumuse avec mes pourcentages
3)J'ai 2 solutions proposées par le programme, soit continuer, soit
quitter
4)Je quitte mon programme, la fenetre se ferme et je suis de nouveau
sur mon OS

Je ne vois pas le mal à fermer cette fenetre, et la difficulté à le
faire

Là il faut m'expliquer

Fred



Si tu as juste à faire ça, pourquoi ne pas faire quelque chose comme ça :

quit = False
while not quit:
faire mumuse avec tes pourcentages
quit = tester le choix de l'utilisateur
faire une sortie propre


plutôt que de vouloir arrêter un programme au milieu d'un test perdu au
milieu d'une boucle infinie.

Je suis d'accord pour dire que les 2 versions marchent, mais une est
propre et permet de gérer correctement la sortie alors que l'autre est
potentiellement une source de problème et plutôt difficile à suivre car
on ne peut pas suivre le déroulement séquentiel du script. C'est sans
doute acceptable pour un petit programme mais quand tu vas passer à
l'échelle tu vas te retrouver avec des programmes que seul toi pourra
comprendre (et encore). Surtout si tu nous rajoutes les goto dont tu as
parlé dans un fil précédent.


Mais c'est ma vision de l'algorithmique, inculquée par un prof sans
doute un peu trop puriste.


Jerome

fred1599
Le #638246
-- snip --

Alors la je ne comprend pas ou plus rien!!!

Pourquoi cela vous semble-t-il bizarre de quitter le programme et
revenir sur nunux

J'explique le déroulement avec plus de précision.

On va dire un programme de pourcentage

1) J'execute le programme, ma fenetre s'ouvre
2)J'applique mon programme, fait mumuse avec mes pourcentages
3)J'ai 2 solutions proposées par le programme, soit continuer, soit
quitter
4)Je quitte mon programme, la fenetre se ferme et je suis de nouveau
sur mon OS

Je ne vois pas le mal à fermer cette fenetre, et la difficulté à le
faire

Là il faut m'expliquer

Fred



Si tu as juste à faire ça, pourquoi ne pas faire quelque chose comme ça :

quit = False
while not quit:
faire mumuse avec tes pourcentages
quit = tester le choix de l'utilisateur
faire une sortie propre


plutôt que de vouloir arrêter un programme au milieu d'un test perdu au
milieu d'une boucle infinie.

Je suis d'accord pour dire que les 2 versions marchent, mais une est
propre et permet de gérer correctement la sortie alors que l'autre est
potentiellement une source de problème et plutôt difficile à suivre car
on ne peut pas suivre le déroulement séquentiel du script. C'est sans
doute acceptable pour un petit programme mais quand tu vas passer à
l'échelle tu vas te retrouver avec des programmes que seul toi pourra
comprendre (et encore). Surtout si tu nous rajoutes les goto dont tu as
parlé dans un fil précédent.


Mais c'est ma vision de l'algorithmique, inculquée par un prof sans
doute un peu trop puriste.


Jerome


Ouais je debute alors c'est vrai que la logique du "quit = False", je
la comprend pas trop

mais bon pour l'instant j'ai testé avec l'option kill et ca fonctionne
tres bien,

Ca fait une petite semaine et demie que je suis dans le python et je
ne connaissais pas d'autre langage avant, alors je vais doucement, et
je pense que je vais poser beaucoup de questions.

Ne soyez pas surpris si vous ne recevez aucunes questions pendant ces
deux semaines, je pars en vacances.

Mais en tout cas je vous remercie tous pour votre patience et votre
compréhension

A bientôt

Fred


Publicité
Poster une réponse
Anonyme