Halten Sie NppExec daran, die Konsolenausgabe abzufangen, bis das Programm beendet ist

2731
Abiel

Ich benutze das NppExec-Plugin von Notepad ++, um Python-Skripte in Notepad ++ auszuführen. Ich stelle fest, dass die mit der print()Anweisung erzeugte Python-Konsolenausgabe nicht auf der Notepad ++ - Konsole angezeigt wird, bis die Ausführung des gesamten Skripts abgeschlossen ist. Gibt es eine Möglichkeit, Druckaussagen in Echtzeit erscheinen zu lassen?

Ich verwende Notepad ++ v.5.9.8 und NppExec v0.4.1.

3
Versuchen Sie `python -u`, um in einem ungepufferten Modus zu laufen. http://stackoverflow.com/questions/230751/how-to-flush-output-of-python-print jdigital vor 12 Jahren 3
@ user8368 - Danke, das hat perfekt funktioniert. Abiel vor 12 Jahren 0

1 Antwort auf die Frage

3
prrao

Das Konsolenfenster von NppExec wird als untergeordneter Prozess gestartet. Dies bedeutet, dass das Aktualisieren der Anzeige des Konsolenfensters sowie das Ausführen des Hauptprogramms in einem einzelnen Thread ausgeführt werden . Standardmäßig werden die Ausgaben der Python-Druckanweisung gepuffert und in demselben Thread wie das übergeordnete Skript ausgeführt, sodass die Ausgabe im ungepufferten Modus angezeigt werden muss . Dies geschieht mit der -uFlagge.

Verwenden Sie python -u script.pyanstelle der herkömmlichen python script.py, wie in dieser SO-Frage zu sehen .

Um zu verhindern, dass die eigenen Fenster Ihres Skripts unterdrückt werden (wissen Sie nicht genau, was hier vor sich geht), führen Sie den Aufruf von Python als Argument für "cmd" aus, indem Sie "cmd / c" vorbelegen. Zum Beispiel verwende ich `cmd / c python -u" $ (FULL_CURRENT_PATH) "` so dass mein Cocos2D-Fenster angezeigt wird. Eric vor 11 Jahren 1