web-dev-qa-db-fra.com

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

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

155
rohitmishra

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 avez besoin de l’exécutable python dans votre chemin. Il suffit de vérifier comment éditer les variables d’environnement sous Windows et d’ajouter C:\PYTHON26 (ou le répertoire dans lequel vous avez installé python).

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

  2. Ajoutez du code à attendre à la fin de votre script. Pour Python2, l'ajout de ...

    raw_input()
    

    ... à la fin du script fait attendre le Enter clé. Cette méthode est agaçante car vous devez modifier le script et vous rappeler de l'avoir supprimé lorsque vous avez terminé. Spécialement ennuyeux lors du test des scripts d'autres personnes. Pour Python3, utilisez input().

  3. Utilisez un éditeur qui fait une pause pour vous. Certains éditeurs préparés pour python se mettront automatiquement en pause après exécution. D'autres éditeurs vous permettent de configurer la ligne de commande utilisée pour exécuter votre programme. Je trouve particulièrement utile de le configurer en tant que "python -i myscript.py" lors de l'exécution. Cela vous renvoie à un shell python après la fin du programme, avec l’environnement du programme chargé, afin que vous puissiez continuer à jouer avec les variables et les fonctions et méthodes d’appel.

140
nosklo

cmd /k est le moyen typique d'ouvrir n'importe quelle application de la console (pas uniquement Python) avec une fenêtre de console qui restera après la fermeture de l'application. Le moyen le plus simple d'y parvenir consiste à appuyer sur Win + R, à taper cmd /k, puis à faire glisser le script souhaité dans la boîte de dialogue Exécuter.

41
tzot

Lancez le script à partir de la fenêtre cmd déjà ouverte ouà la fin du script, ajoutez quelque chose comme ceci, en Python 2:

 raw_input("Press enter to exit ;)")

Ou, en Python 3:

input("Press enter to exit ;)")
31
Anurag Uniyal

Garder votre fenêtre ouverte en cas d'exception (pour le moment, tout en imprimant l'exception)

Python 2

if __== '__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 dans tous les cas:

if __== '__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 les instructions print.

if __== '__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 dans tous les cas:

if __== '__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()
17
Antonio

vous pouvez combiner les réponses avant: (pour Notepad ++ User)

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, etc. :)

13
feinmann

Créez un fichier de commandes Windows avec ces 2 lignes:

python your-program.py

pause
9
maurizio

En utilisant atexit , vous pouvez suspendre le programme dès sa sortie. Si une erreur/exception est la raison de la sortie, il se mettra en pause après avoir imprimé le stacktrace.

import atexit

# Python 2 should use `raw_input` instead of `input`
atexit.register(input, 'Press Enter to continue...')

Dans mon programme, je mets l'appel à atexit.register dans la clause except, afin qu'il ne s'interrompe que si quelque chose ne va pas.

if __== "__main__":
    try:
        something_that_may_fail()

    except:
        # Register the pause.
        import atexit
        atexit.register(input, 'Press Enter to continue...')

        raise # Reraise the exception.
6
leewz

En python 2, vous pouvez le faire avec: raw_input ()

>>print("Hello World!")    
>>raw_input('Waiting a key...')

En python 3, vous pouvez le faire avec: input () 

>>print("Hello world!")    
>>input('Waiting a key...')

En outre, vous pouvez le faire avec time.sleep (time)

>>import time
>>print("The program will close in 5 seconds")
>>time.sleep(5)
6
Brandon Aguilar

J'avais un problème similaire. Avec Notepad ++, j'avais l'habitude d'utiliser la commande: C:\Python27\python.exe "$(FULL_CURRENT_PATH)" qui fermait la fenêtre de commande immédiatement après la fin du code.
Maintenant, j'utilise cmd /k c:\Python27\python.exe "$(FULL_CURRENT_PATH)" qui garde la fenêtre cmd ouverte.

5
Matej

Sur Python 3

input('Press Enter to Exit...')

Fera le tour. 

3
Amila

Si vous souhaitez exécuter votre script à partir d'un raccourci sur le bureau, cliquez avec le bouton droit de la souris sur votre fichier python et sélectionnez Send to|Desktop (create shortcut). Cliquez ensuite avec le bouton droit sur le raccourci et sélectionnez Propriétés. Dans l'onglet Raccourci, sélectionnez la zone de texte Cible: et ajoutez cmd /k devant le chemin, puis cliquez sur OK. Le raccourci doit maintenant exécuter votre script sans se fermer et vous n'avez pas besoin de la fonction input('Hit enter to close')

Notez que si vous avez plusieurs versions de python sur votre ordinateur, ajoutez le nom de l'exécutable python requis entre cmd/k et le chemin d'accès scipt, comme suit:

cmd /k python3 "C:\Users\<yourname>\Documents\your_scipt.py"
2
Paul Stevens

Pour garder la fenêtre ouverte, je suis d’accord avec Anurag et c’est ce que j’ai fait pour garder mes fenêtres ouvertes pour de petits programmes de type calcul.

Ceci afficherait simplement un curseur sans texte:

raw_input() 

Cet exemple suivant vous indiquera clairement que le programme est terminé et qu'il n'est pas en attente d'une autre entrée. Invite dans le programme:

print('You have reached the end and the "raw_input()" function is keeping the window open') 
raw_input()

Remarque!
(1) Dans python 3, il n'y a pas raw_input (), seulement input ().
(2) Utilisez des guillemets simples pour indiquer une chaîne; sinon, si vous tapez des doubles autour de quoi que ce soit, tel que "raw_input ()", il pensera qu'il s'agit d'une fonction, d'une variable, etc., et non de texte.

Dans cet exemple, j'utilise des guillemets doubles pas fonctionne parce qu'il pense qu'il y a une rupture dans les guillemets entre "la" et "fonction" même cependant, lorsque vous le lisez, votre propre esprit peut en donner un sens parfait:

print("You have reached the end and the "input()" function is keeping the window open")
input()

J'espère que cela aidera les personnes qui pourraient être débutantes et qui n'ont toujours pas compris comment l'ordinateur pense. Cela peut prendre un moment. : o)

2
Mr Whybull

Hormis input et raw_input, vous pouvez également utiliser une boucle infinie while, comme celle-ci: while True: pass (Python 2.5 +/3) ou while 1: pass (toutes les versions de Python 2/3). Cela pourrait utiliser la puissance de calcul, cependant.

Vous pouvez également exécuter le programme à partir de la ligne de commande. Tapez python dans la ligne de commande (terminal Mac OS X) et il devrait indiquer Python 3.?.? (votre version Python). Il n'affiche pas votre version Python, ou dit python: command not found, cherchez à modifier les valeurs PATH (valeurs d'environnement énumérées ci-dessus)/type C:\(Python folder\python.exe . Si cela réussit, tapez python ou C:\(Python installation)\python.exe et le répertoire complet de votre programme.

1
user3836103

Une réponse très tardive, mais j'ai créé un fichier batch Windows appelé pythonbat.bat contenant les éléments suivants:

python.exe %1
@echo off
echo.
pause

et a ensuite spécifié pythonbat.bat en tant que gestionnaire par défaut pour les fichiers .py.

Maintenant, lorsque je double-clique sur un fichier .py dans l'Explorateur de fichiers, il ouvre une nouvelle fenêtre de console, exécute le script Python, puis se met en pause (reste ouvert) jusqu'à ce que j'appuie sur une touche ...

Aucune modification requise pour les scripts Python.

Je peux toujours ouvrir une fenêtre de console et spécifier python myscript.py si je souhaite ...

(Je viens de remarquer que @maurizio a déjà posté cette réponse exacte)

0
roryhewitt

Vous pouvez ouvrir PowerShell et taper "python". Une fois que Python a été importé, vous pouvez copier-coller le code source à partir de votre éditeur de texte favori pour exécuter le code.

La fenêtre ne ferme pas.

0