it-swarm.com.de

Wie halte ich ein Python-Skriptausgabefenster offen?

Ich habe gerade mit Python angefangen. Wenn ich eine Python-Skriptdatei unter Windows ausführe, wird das Ausgabefenster angezeigt, verschwindet jedoch sofort. Ich brauche es, um dort zu bleiben, damit ich meine Ausgabe analysieren kann. Wie kann ich es offen halten?

155
rohitmishra

Sie haben einige Möglichkeiten:

  1. Führen Sie das Programm von einem bereits geöffneten Terminal aus. Öffnen Sie eine Eingabeaufforderung und geben Sie Folgendes ein:

    python myscript.py
    

    Damit dies funktioniert, benötigen Sie die ausführbare Python-Datei in Ihrem Pfad. Überprüfe einfach wie man Umgebungsvariablen bearbeitet unter Windows und füge C:\PYTHON26 hinzu (oder in welches Verzeichnis auch immer du Python installiert hast).

    Wenn das Programm beendet ist, kehren Sie zur Eingabeaufforderung cmd zurück, anstatt das Fenster zu schließen.

  2. Fügen Sie Code hinzu, um am Ende Ihres Skripts zu warten. Für Python2 wird Folgendes hinzugefügt ...

    raw_input()
    

    ... am Ende des Skripts wartet es auf die Enter Schlüssel. Diese Methode ist ärgerlich, weil Sie das Skript ändern müssen und daran denken müssen, es zu entfernen, wenn Sie fertig sind. Besonders ärgerlich beim Testen von Skripten anderer Leute. Verwenden Sie für Python3 input().

  3. Verwenden Sie einen Editor, der für Sie pausiert. Einige für Python vorbereitete Editoren werden nach der Ausführung automatisch für Sie angehalten. In anderen Editoren können Sie die Befehlszeile konfigurieren, die zum Ausführen Ihres Programms verwendet wird. Ich finde es besonders nützlich, es als "python -i myscript.py" zu konfigurieren, wenn es ausgeführt wird. Das bringt Sie nach dem Ende des Programms zu einer Python-Shell, in der die Programmumgebung geladen ist, sodass Sie weiter mit den Variablen spielen und Funktionen und Methoden aufrufen können.

140
nosklo

cmd /k ist die typische Methode zum Öffnen einer Konsolenanwendung (nicht nur Python) mit einem Konsolenfenster, das nach dem Schließen der Anwendung angezeigt wird. Die einfachste Möglichkeit dazu ist, Win + R zu drücken, cmd /k einzugeben und dann das gewünschte Skript per Drag & Drop in das Dialogfeld "Ausführen" zu ziehen.

41
tzot

Starten Sie das Skript aus dem bereits geöffneten Cmd-Fenster oderat. Am Ende des Skripts fügen Sie in Python 2 Folgendes hinzu:

 raw_input("Press enter to exit ;)")

Oder in Python 3:

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

Um das Fenster in Ausnahmefällen geöffnet zu halten (beim Drucken der Ausnahme)

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() 

Um das Fenster auf jeden Fall offen zu halten:

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

Für Python3 müssen Sie verwenden Sie input() anstelle von raw_input() und müssen natürlich die print-Anweisungen anpassen.

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() 

Um das Fenster auf jeden Fall offen zu halten:

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

sie können die Antworten zuvor kombinieren: (für Notepad ++ User)

drücken Sie F5, um das aktuelle Skript auszuführen, und geben Sie den folgenden Befehl ein: 

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

auf diese Weise bleiben Sie nach der Ausführung Ihres Notepad ++ - Python-Skripts im interaktiven Modus und können mit Ihren Variablen usw. herumspielen. :)

13
feinmann

Erstellen Sie eine Windows-Batchdatei mit diesen zwei Zeilen:

python your-program.py

pause
9
maurizio

Mit atexit können Sie das Programm direkt nach dem Beenden anhalten. Wenn ein Fehler/eine Ausnahme der Grund für das Beenden ist, wird der Ausdruck nach dem Drucken des Stacktraces angehalten.

import atexit

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

In meinem Programm stelle ich den Aufruf von atexit.register in die except-Klausel ein, damit er nur angehalten wird, wenn etwas schief geht.

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

In Python 2 können Sie dies mit: raw_input () tun

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

In Python 3 können Sie dies mit: input () tun 

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

Sie können es auch mit dem time.sleep machen (time)

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

Ich hatte ein ähnliches Problem. In Notepad ++ verwendete ich den Befehl: C:\Python27\python.exe "$(FULL_CURRENT_PATH)", der das Cmd-Fenster unmittelbar nach Beendigung des Codes schloss.
Jetzt verwende ich cmd /k c:\Python27\python.exe "$(FULL_CURRENT_PATH)", wodurch das cmd-Fenster geöffnet bleibt.

5
Matej

Zu Python 3

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

Werde den Trick tun 

3
Amila

Wenn Sie Ihr Skript von einer Desktop-Verknüpfung aus ausführen möchten, klicken Sie mit der rechten Maustaste auf Ihre Python-Datei und wählen Sie Send to|Desktop (create shortcut). Klicken Sie dann mit der rechten Maustaste auf die Verknüpfung und wählen Sie Eigenschaften. Wählen Sie auf der Registerkarte Verknüpfung das Textfeld Ziel: und fügen Sie cmd /k vor dem Pfad ein, und klicken Sie auf OK. Die Verknüpfung sollte jetzt das Skript ausführen, ohne es zu schließen, und Sie benötigen keine input('Hit enter to close').

Wenn Sie mehr als eine Python-Version auf Ihrem Computer installiert haben, fügen Sie den Namen der erforderlichen Python-Programmdatei zwischen cmd/k und dem Pfadpfad wie folgt hinzu:

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

Um nur das Fenster offen zu halten, stimme ich mit Anurag überein und habe dies getan, um meine Fenster für kurze Berechnungsprogramme offen zu halten.

Dies würde nur einen Cursor ohne Text anzeigen:

raw_input() 

Dieses nächste Beispiel gibt Ihnen eine klare Nachricht, dass das Programm fertig ist und nicht auf eine andere Eingabeaufforderung innerhalb des Programms wartet:

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

Hinweis!
(1) In Python 3 gibt es kein raw_input (), nur input ().
(2) Verwenden Sie einfache Anführungszeichen, um eine Zeichenfolge anzuzeigen. Andernfalls, wenn Sie doppelte Zeichen eingeben, z. B. "raw_input ()", wird es denken, dass es sich um eine Funktion, Variable usw. handelt und nicht um Text.

In diesem nächsten Beispiel verwende ich doppelte Anführungszeichen, und wird nicht funktioniert, weil es der Meinung ist, dass zwischen den "Funktion" und "Funktion" ein Bruch steht, auch wenn Sie es selbst lesen der Verstand kann es vollkommen verstehen:

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

Hoffentlich hilft das anderen, die vielleicht noch anfangen und noch nicht herausgefunden haben, wie der Computer denkt. Es kann eine Weile dauern. :O)

2
Mr Whybull

Abgesehen von input und raw_input können Sie auch eine unendliche while-Schleife verwenden, wie etwa: while True: pass (Python 2.5 +/3) oder while 1: pass (alle Versionen von Python 2/3). Dies kann jedoch Rechenleistung erfordern.

Sie können das Programm auch über die Befehlszeile ausführen. Geben Sie python in die Befehlszeile (Mac OS X Terminal) ein und es sollte Python 3.?.? (Ihre Python-Version) angezeigt werden. Die Python-Version wird nicht angezeigt, oder python: command not found. Ändern Sie die PATH-Werte (Umgebungsparameter, oben aufgeführt)/type C:\(Python folder\python.exe . Wenn dies erfolgreich ist, geben Sie python oder C:\(Python installation)\python.exe und das Verzeichnis full Ihres Programms ein.

1
user3836103

Eine sehr verspätete Antwort, aber ich habe eine Windows-Batch-Datei mit dem Namen pythonbat.bat erstellt, die Folgendes enthält:

python.exe %1
@echo off
echo.
pause

und dann pythonbat.bat als Standardhandler für .py-Dateien angegeben.

Wenn ich nun im Datei-Explorer auf eine .py-Datei doppelklicke, wird ein neues Konsolenfenster geöffnet, das Python-Skript ausgeführt und dann angehalten (bleibt geöffnet), bis ich eine beliebige Taste drücke ...

Es sind keine Änderungen an Python-Skripts erforderlich.

Ich kann immer noch ein Konsolenfenster öffnen und python myscript.py angeben, wenn ich ...

(Ich habe gerade bemerkt, dass @maurizio diese genaue Antwort bereits gepostet hat.)

0
roryhewitt

Sie können PowerShell öffnen und "python" eingeben. Nachdem Python importiert wurde, können Sie den Quellcode aus Ihrem bevorzugten Texteditor kopieren und einfügen, um den Code auszuführen.

Das Fenster wird nicht geschlossen.