232 votes

Comment garder ouverte une fenêtre de sortie Python script ?

Je viens de commencer à utiliser Python. Lorsque j'exécute un fichier python script sous Windows, la fenêtre de sortie apparaît mais disparaît instantanément. J'ai besoin qu'elle y reste pour pouvoir analyser ma sortie. Comment puis-je la garder ouverte ?

7 votes

Un +1000 tardif. J'utilise python comme langage d'enseignement pour un ami qui utilise Windows, et je ne pouvais pas croire à quel point il était difficile (du moins en se basant sur la documentation existante) d'arriver à ce que nous puissions exécuter un script et voir la sortie.

2 votes

Il suffit de glisser/déposer votre script dans une fenêtre cmd

0 votes

On pourrait penser que la fenêtre de sortie devrait rester ouverte par défaut. C'est le cas lorsque vous exécutez Python sous Mac OS. Très frustrant

191voto

nosklo Points 75862

Vous avez quelques options :

  1. Exécutez le programme à partir d'un terminal déjà ouvert. Ouvrez une invite de commande et tapez :

    python myscript.py

    Pour que cela fonctionne, vous devez avoir l'exécutable python dans votre chemin. Il suffit de vérifier sur comment modifier les variables d'environnement sous Windows, et ajoutez C:\PYTHON26 (ou le répertoire dans lequel vous avez installé python).

    Lorsque le programme se termine, il vous ramènera à la page cmd au lieu de fermer la fenêtre.

  2. Ajoutez du code pour attendre à la fin de votre script. Pour Python2, ajouter ...

    raw_input()

    ... à la fin du script le fait attendre le Enter clé. Cette méthode est ennuyeuse car vous devez modifier le script, et devez vous souvenir de le supprimer lorsque vous avez terminé. Particulièrement ennuyeux lorsque vous testez les scripts d'autres personnes. Pour Python3, utilisez input() .

  3. Utilisez un éditeur qui fait des pauses pour vous. Certains éditeurs préparés pour python feront automatiquement une pause pour vous après l'exécution. D'autres éditeurs vous permettent de configurer la ligne de commande qu'il utilise pour exécuter votre programme. Je trouve particulièrement utile de la configurer comme " python -i myscript.py "lors de l'exécution. Cela vous amène à un shell python après la fin du programme, avec l'environnement du programme chargé, afin que vous puissiez jouer avec les variables et appeler les fonctions et les méthodes.

10 votes

+1 au point 3. J'utilise Scite comme éditeur Python et il conserve simplement la sortie dans sa propre fenêtre de sortie. C'est vraiment utile car vous pouvez potentiellement voir la sortie de plus d'une exécution dans une seule fenêtre.

0 votes

Je suis capable de voir la sortie en l'exécutant à partir d'un terminal déjà ouvert. Mais je dois donner l'adresse complète du script dans la commande python ? Cela peut-il être évité ? Lorsque j'utilise la méthode raw_input(), cela me donne NameError : name 'raw_input'is not defined. Pouvez-vous me suggérer un éditeur qui se met automatiquement en pause après l'exécution ?

1 votes

@movingahead : peut-être utilisez-vous python 3 ? Dans python 3, il a été renommé en input(). Mais j'utiliserais python 2.6 pour le moment, puisque python 3 manque d'importantes bibliothèques tierces qui n'ont pas encore été portées. (voir les autres questions sur python 2vs3). A propos de l'éditeur, je n'utilise pas Windows, notepad++ vous permet de configurer la commande. J'utilise emacs qui a une version Windows, mais je ne l'ai jamais utilisé.

68voto

tzot Points 32224

cmd /k est la façon typique d'ouvrir toute application console (pas seulement Python) avec une fenêtre console qui restera après la fermeture de l'application. Le moyen le plus simple auquel je pense pour faire cela, est de presser Win+R, taper cmd /k puis faites glisser et déposez le script que vous voulez dans la boîte de dialogue Exécuter.

3 votes

Réponse fantastique. Vous auriez dû avoir ça.

1 votes

Pour info, pour la commande python os.system, vous devriez faire os.system( "cmd /k " + myAppPath + " " + myFlagsString )

1 votes

cmd /k est réservé à Windows. Je ne peux pas vous aider avec une alternative Mac, désolé.

64voto

Anurag Uniyal Points 31931

Lancez le script depuis une fenêtre cmd déjà ouverte ou bien à la fin de script ajouter quelque chose comme ceci, en Python 2 :

 raw_input("Press enter to exit ;)")

Ou, en Python 3 :

input("Press enter to exit ;)")

2 votes

"N'importe quelle touche" ne fonctionnera pas, seule la touche Entrée fonctionnera (ou Ctrl+D, selon l'endroit où l'on se trouve).

1 votes

@DanielAndersson Oui, j'ai changé le texte.

79 votes

Si vous y réfléchissez, c'est assez profond que seul "entrer" vous permette de "sortir"...

27voto

Antonio Points 2246

Pour garder votre fenêtre ouverte en cas d'exception (encore, en imprimant l'exception)

Python 2

if __name__ == '__main__':
    try:
        ## your code, typically one function call
    except Exception:
        import sys
        print sys.exc_info()[0]
        import traceback
        print traceback.format_exc()
        print "Press Enter to continue ..." 
        raw_input() 

Pour garder la fenêtre ouverte en tout cas :

if __name__ == '__main__':
    try:
        ## your code, typically one function call
    except Exception:
        import sys
        print sys.exc_info()[0]
        import traceback
        print traceback.format_exc()
    finally:
        print "Press Enter to continue ..." 
        raw_input()

Python 3

Pour Python3, vous devrez utiliser input() à la place de raw_input() et, bien sûr, adapter le print déclarations.

if __name__ == '__main__':
    try:
        ## your code, typically one function call
    except BaseException:
        import sys
        print(sys.exc_info()[0])
        import traceback
        print(traceback.format_exc())
        print("Press Enter to continue ...")
        input() 

Pour garder la fenêtre ouverte en tout cas :

if __name__ == '__main__':
    try:
        ## your code, typically one function call
except BaseException:
    import sys
    print(sys.exc_info()[0])
    import traceback
    print(traceback.format_exc())
finally:
    print("Press Enter to continue ...")
    input()

20voto

feinmann Points 127

Vous pouvez combiner les réponses précédentes : (pour les utilisateurs de Notepad++)

appuyez sur F5 pour exécuter le script actuel et tapez la commande :

cmd /k python -i "$(FULL_CURRENT_PATH)"

de cette façon, vous restez en mode interactif après avoir exécuté votre script python Notepad++ et vous pouvez jouer avec vos variables et ainsi de suite :)

0 votes

Cela fait un excellent fichier batch Windows, si vous changez $(FULL_CURRENT_PATH) en un nom de chemin Windows.

0 votes

J'ai trouvé beaucoup plus facile d'obtenir le plugin PyNPP et d'assigner un raccourci pour le lancer (n'oubliez pas de désactiver le raccourci F5 précédent).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X