führen Sie eine grundlegende digitale Uhr in der python-shell
Will ich code-einfache digitale Uhr in der python-shell. Ich möchte vermeiden, mit tkinter, wenn möglich. Dies ist, was ich derzeit habe;
import time
while True:
from datetime import datetime
now = datetime.now()
print ("%s/%s/%s %s:%s:%s" % (now.month,now.day,now.year,now.hour,now.minute,now.second))
time.sleep(1)
Dies erzeugt eine wiederkehrende drucken Sie, so etwas wie dieses;
06/29/16 23:08:32
06/29/16 23:08:33
06/29/16 23:08:34
Ich weiß, das ist grob, ich bin immer noch lernen. Ich will einfach eine Zeile mit einem "ticken" digital-Uhr in der shell. Ich bin mit python 3.5.1 unter idle und windows 10.
Falls dies nicht möglich ist, würde ich sehr gerne wissen, warum.
Herzliche Dank
- Mögliche Duplikate von Ersetzen Sie die Ausgabe der Konsole in python
- Ich glaube nicht, dass Sie gehen zu müssen, viel Glück mit diesem im idle, würde ich empfehlen, Sie völlig zu vergessen Leerlauf und verwenden ipython oder eines der vielen guten python-IDEs', wie pycharm etc..
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie nur drucken, eine fixe Länge eine Ausgabe wie diese jedes mal, die Sie verwenden können, die Wagenrücklaufzeichen Zurückspulen an den Anfang der Zeile, solange Sie nicht drucken Sie einen Zeilenumbruch. Beispiel:
Nun, Sie können auch feststellen, dass nichts ist jemals gedruckt auf dem Bildschirm. Dies ist, weil die Norm ist gepuffert, so dass Sie bündig mit dieser:
Das ganze funktioniert wie folgt. Stell dir vor, es ist tatsächlich ein cursor auf dem Bildschirm. Sie zuerst drucken Sie sich die Zeit, mit den ersten drucken (und die Spülung), dann bewegen Sie den cursor wieder an den Anfang der Zeile mit
print("\r"),
. Das nicht tatsächlich entfernen Sie alle Zeichen, die es gerade bewegt den cursor. Schreiben Sie dann das nächste mal wieder aus. Weil es schön passiert, genau die gleiche Länge, die Zeit wird geschrieben, wieder heraus, und ersetzen Sie die alten Charaktere.Das resultierende Skript dann wie folgt aus:
Wenn Sie möchten feinere Kontrolle über das, was Los ist, können Sie mit der curses-Bibliothek, aber ich kann mir vorstellen, dass der overkill für das, was Sie hier versuchen.
EDIT: Wie @PadraicCunningham erwähnt in den Kommentaren, die korrekte syntax zu unterdrücken newline Druck in Python 3 und zwingen den Inhalt zu leeren, um den Bildschirm ist die folgende:
Auch, wie @AlexHall erwähnt, die print-Anweisung nicht tatsächlich drucken Sie eine Feste Breite-Anweisung; also um dies zu tun, sollte man mit
strftime()
statt.Daher das richtige Programm ist:
flush=True
im print-Funktion, aber ich glaube nicht, dass was auch immer Sie tun, ist zur Arbeit zu gehen, im Leerlaufend=""
zu entfernen, Zeilenumbrüche, aus dem Gedächtnis, ich glaube nicht, dass das funktionierte im Leerlauf, ich denke, die Installation idlex kann den trick tun idlex.sourceforge.netstrftime
statt diese manuelle Formatierung (die, die nicht für zweistellig btw). Ich brauche wederflush=True
nochsys.stdout.flush()
wenn ich testen im terminal mitpython3
, und Sie haben beide am Ende. Sie sagte, Python 2 in der Bearbeitung, aber ich denke, du meintest 3. Bewegen Sie den datetime import an die Spitze..flush()
. Wie für dieflush=True
, dass hängt ganz von Ihrer Plattform. Linux-und OS X-libc in der Regel Puffer-Ausgang, und nur flushes, um den Bildschirm auf ein newline; ich bin mir nicht 100% sicher, dass auf Windows' Verhalten.versucht, diese in repl.es funktionierte für mich...( mehr Kommas & jetzt.strftime )
Alles, was Sie brauchen, ist:
Folgende code funktioniert für mich.