Seite 1 von 1

Systemzeit sekundlich ausgeben

Verfasst: Sonntag 16. Februar 2014, 13:02
von RudelGurken
Hallo Forum,
ich bin in Python leider immer noch ein Rookie.
Wie ich die Systemzeit auslese ist mir mittlerweile bekannt, aber wie kann ich diese sekundlich ausgeben, bzw. abfangen?Also für den Anfang will ich auf der Shell einfach eine Endlosschleife ablaufen lassen in der mir die zeit ausgespuckt wird*G*
mfg
das Rudel Gurken

Re: Systemzeit sekundlich ausgeben

Verfasst: Sonntag 16. Februar 2014, 13:15
von darktrym
Du könntest Timer dafür missbrauchen.

Re: Systemzeit sekundlich ausgeben

Verfasst: Sonntag 16. Februar 2014, 14:27
von BlackJack
@RudelGurken: Schreib einfach eine Endlosschleife in der die Zeit ausgegeben und eine Sekunde gewartet wird.

Re: Systemzeit sekundlich ausgeben

Verfasst: Sonntag 16. Februar 2014, 14:51
von snafu
Da ich nicht glaube, dass für jede Uhrzeitänderung eine neue Zeile gewünscht ist, kann man die alte Zeit innerhalb einer Schleife folgendermaßen überschreiben:

Code: Alles auswählen

import sys
import time

def show_time():
    while True:
        current_time = time.strftime('%H:%M:%S')
        sys.stdout.write(current_time + '\r')
        sys.stdout.flush()
        time.sleep(1)
Das "\r" setzt den Cursor immer wieder auf den Zeilenanfang zurück. Das ".flush()" ist notwendig, weil die neue Ausgabe sonst nicht unmittelbar angezeigt wird.

Re: Systemzeit sekundlich ausgeben

Verfasst: Sonntag 16. Februar 2014, 16:06
von RudelGurken
Hi,
leider passiert gar nichts wenn ich deinen Code ausführe. Aber vielen lieben Dank für eure Hilfe.
mit besten Grüßen
Eure Gurken

Re: Systemzeit sekundlich ausgeben

Verfasst: Sonntag 16. Februar 2014, 16:08
von snafu
Welches Betriebssystem nutzt du und wie rufst du genau das Skript auf?

Re: Systemzeit sekundlich ausgeben

Verfasst: Sonntag 16. Februar 2014, 16:15
von Sirius3
@RudelGurken: damit etwas passiert, mußt Du snafus Funktion auch aufrufen, z.B. in dem Du die folgenden Zeilen noch anhängst:

Code: Alles auswählen

def main():
    show_time()

if __name__ == '__main__':
    main()

Re: Systemzeit sekundlich ausgeben

Verfasst: Sonntag 16. Februar 2014, 16:24
von RudelGurken
Hi,
ja ich habe gerade mit Hilfe eines anderen Tutorials gelesen, dass so in Python Funktionen definiert werden*G*.
Ich habe das ganze jetzt wie folgt gelöst:

Code: Alles auswählen

#Zeit in Sekunden ausgeben lassen
#Zeit ausgeben
from time import *
# Zeit in Sekunden
while True:
        lt = localtime()
        mytime = strftime("Stunde:Minute:Sekunde: %H:%M:%S",lt)
        sys.stdout.write(mytime + '\r')
        sys.stdout.flush()
Besten Dank. Kann ich hier jetzt noch ein Interrupt einbauen, welches auf Eingaben von Außen reagiert (z.B. Konsolen ausgaben)?

Re: Systemzeit sekundlich ausgeben

Verfasst: Sonntag 16. Februar 2014, 17:02
von Sirius3
@RudelGurken: bitte gewöhn Dir nicht schlechte Gewohnheiten an. Sternchenimporte sind schlecht, weil nicht kontrollierbar ist, was da in den eigenen Namensraum geschaufelt wird. Einrücktiefe sind 4 Leerzeichen pro Ebene. Auf Modulebene sollten keine Befehle stehen, weil dann der Code nicht mehr als Modul ohne Nebeneffekte importiert werden kann.

Re: Systemzeit sekundlich ausgeben

Verfasst: Sonntag 16. Februar 2014, 17:17
von RudelGurken
Hi,
vielen Dank für deine Hinweise, das mit dem Import habe ich verstanden, ebenso das mit den Leerzeichen (aktuell nutze ich vom Nano (debian) den Tabulator, werde dass dann aber korrigieren). Nur das mit der Modulebene verstehe ich noch nicht ganz*G*.
mit bestem Gruß

Re: Systemzeit sekundlich ausgeben

Verfasst: Sonntag 16. Februar 2014, 17:30
von Sirius3
@RudelGurken: um es kurz zu sagen: pack alles in Funktionen und schreib am Ende ein »if __name__ ...« wie in meinem vorherigen Post. Das verhindert, wie gesagt, dass beim Importieren als Modul irgendetwas unvorhergesehenes passiert.

Re: Systemzeit sekundlich ausgeben

Verfasst: Sonntag 16. Februar 2014, 17:40
von RudelGurken
Okay, mache ich besten Dank!!!