2016-07-27 18 views
0

Gibt es eine Möglichkeit, Emacs Shell-Mode zu erhalten, die Ausgabe so anzuzeigen, wie sie es empfängt, statt auf den vorherigen Befehl zu warten?Display stdout wie im Emacs Shell-Mode empfangen

Zum Beispiel:

python -c "import time; print 'hello'; time.sleep(3); print '...goodbye'" 

werden 3 Sekunden lang anhalten und dann drucken „Hallo“ und „... Auf Wiedersehen“ zur gleichen Zeit. Ich versuche, "Hallo" zu drucken, warte drei Sekunden und drucke dann "... tschüss".

Ich bin mit Emacs 25.0.93.1 auf Windows 7.

Antwort

0

glaube ich, was passiert ist, dass das „Hallo“ in den Ausgabepuffer stecken und wird nicht ausgegeben, bis das Programm beendet (oder den Puffer füllt sich mehr). Dies geschah auch, als ich Ihren Code in einem Bash-Konsolenfenster (außerhalb von Emacs) ausgeführt habe.

Sie können den Ausgabepuffer manuell leeren, indem Sie sys.stdout.flush() verwenden, wodurch der Text im Puffer ("Hallo") sofort angezeigt wird.

Getestet habe ich den folgenden Code in Shell Emacs, Eshell und Begriff Modi (man beachte ich die print-Anweisungen zu python3 Syntax auch umgerechnet):

python -c "import time; import sys; print ('hello'); sys.stdout.flush(); time.sleep(3); print ('...goodbye')" 
+0

sys.stdout.flush() funktionierte perfekt, danke! – nslamberth