@SteveGameDE: das Programm ist total kaputt. Zeile 11 liest die gesamte Datei, so dass die Schleife in Zeile 12 nie ausgeführt wird. Zu Zeile 14 hat pixewakb ja schon was geschrieben. Wenn man mit Zeiten arbeiten will, sollte man das datetime-Modul verwenden und nicht intern mit Stringrepresentationen von Zeiten arbeiten. Soll wirklich zweimal pro Sekunde die Datei Times.txt gelesen und deren Inhalt in ein Wörterbuch mit Zahlenindizes gesteckt werden, die immer weiter gezählt werden? Und was soll die Abfrage bedeuten: Irgendeine Zeit soll kleiner als die aktuelle sein? Wenn also 6Uhr als Weckzeit eingetragen ist, soll von 6 bis 24 Uhr immer "Wecker ausgelöst" angezeigt werden?
Das Verwenden eines Wörterbuches hier ist quatsch. Du hast eine Liste mit Zeiten, also ist doch List der sinnvollste Datentyp. Listen werden erzeugt, indem man Elemente anhängt (append):
Code: Alles auswählen
with open('Times.txt') as times:
alarm_times_unparsed = []
for line in times:
alarm_times_unparsed.append(line.strip())
oder kürzer:
Code: Alles auswählen
with open('Times.txt') as times:
alarm_times_unparsed = [line.strip() for line in times]
als nächstes wollen wir ja keine Strings sondern Zeiten, also müssen wir die Strings in Zeiten umwandeln. Das ist etwas komplizierter, darum schreiben wir erst eine Funktion, die das für einen String macht:
Code: Alles auswählen
def parse_time(time):
return datetime.datetime.strptime(time, '%H:%M:%S').time()
um diese Funktion dann auf jedes Element der Liste anzuwenden um daraus eine neue Liste zu bauen:
Code: Alles auswählen
alarm_times = []
for alarm in alarm_times_unparsed:
alarm_times.append(parse_time(alarm))
Natürlich können wir das alles auch in einem Schritt machen:
Code: Alles auswählen
with open('Times.txt') as times:
alarm_times = [parse_time(line.strip()) for line in times]
Jetzt kommt der Punkt, wo mir nicht klar ist, was Du eigentlich willst, das Vergleichen mit der aktuellen Zeit. Hier mal für alle Zeiten:
Code: Alles auswählen
now = datetime.datetime.now().time()
for alarm_time in alarm_times:
if alarm_time < now:
print "Wecker ausgelöst: {0:%H:%M:%S}!".format(alarm_time)
Wie Du siehst, braucht man nirgends eine laufende Nummer, einen Index, weil man Python immer nur sagt: "mach für alle Elemente der Liste das selbe" (per for-Schleife) ist es ja egal, ob es die erste, die zweite oder die x-te Alarmzeit ist.