Systemzeit sekundlich ausgeben

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
RudelGurken
User
Beiträge: 29
Registriert: Freitag 24. Mai 2013, 09:51

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
Benutzeravatar
darktrym
User
Beiträge: 784
Registriert: Freitag 24. April 2009, 09:26

Du könntest Timer dafür missbrauchen.
„gcc finds bugs in Linux, NetBSD finds bugs in gcc.“[Michael Dexter, Systems 2008]
Bitbucket, Github
BlackJack

@RudelGurken: Schreib einfach eine Endlosschleife in der die Zeit ausgegeben und eine Sekunde gewartet wird.
Benutzeravatar
snafu
User
Beiträge: 6740
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

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.
RudelGurken
User
Beiträge: 29
Registriert: Freitag 24. Mai 2013, 09:51

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
Benutzeravatar
snafu
User
Beiträge: 6740
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Welches Betriebssystem nutzt du und wie rufst du genau das Skript auf?
Sirius3
User
Beiträge: 17753
Registriert: Sonntag 21. Oktober 2012, 17:20

@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()
RudelGurken
User
Beiträge: 29
Registriert: Freitag 24. Mai 2013, 09:51

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)?
Sirius3
User
Beiträge: 17753
Registriert: Sonntag 21. Oktober 2012, 17:20

@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.
RudelGurken
User
Beiträge: 29
Registriert: Freitag 24. Mai 2013, 09:51

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ß
Sirius3
User
Beiträge: 17753
Registriert: Sonntag 21. Oktober 2012, 17:20

@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.
RudelGurken
User
Beiträge: 29
Registriert: Freitag 24. Mai 2013, 09:51

Okay, mache ich besten Dank!!!
Antworten