Schleife mit Tastendruck abbrechen?

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
günni
User
Beiträge: 9
Registriert: Dienstag 27. Mai 2003, 14:28

hi
wie kann ich eine schleife durch einen tastendruck (z.b. enter) abbrechen?

hitergrund:
ich habe mir ein skript geschrieben, das alle 55 sekunden eine webseite aufruft.
dies soll aber nur solange laufen bis man eine taste drückt um es abzubrechen...

Code: Alles auswählen

#!/usr/bin/python2.2
import time, sys, webbrowser

url = ("http://aufzurufende_url.de ")
stop = 1
while stop:
	webbrowser.open(url)
	time.sleep(55)
ich hab mir gedacht einfach durch einen tastendruck "stop" auf 0 zu setzen und dadurch die schleife abzubrechen....
nur wie funktioniert sowas? oder gibts da auch einfachere / bessere wege?

gruß günni
ertlpott
User
Beiträge: 44
Registriert: Montag 14. April 2003, 16:05

du kannst eine Endlosschleife durch strg+c abbrechen wenn das dass ist was du meinst.

cu

Simon
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Hallo,

hmm, wenn Du mit dem webbrowser-Modul den Browser startest, bekommt dieser den "Fokus", also alle Maus- und Tastatureingaben gehen an den Browser um von dem verarbeitet zu werden. Da hast Du dann keine Chance einen Tastendruck an Dein Script geliefert zu bekommen.


Gruß

Dookie
günni
User
Beiträge: 9
Registriert: Dienstag 27. Mai 2003, 14:28

hi
hmm.. wenn ich versuche die schleife mit Strg + c abzubrechen passiert garnix...

aber das meinte ich auch nicht..
ich dachte an n "sauberen abgang" sozusagen. sowas in der art wie ne text ausgabe:
" Zum beenden Enter drücken... " mehr oder weniger Dau kompatiebel
(auch wenn kein dau das proggi zu gesicht bekommt ;)


gruß günni
hanspeter

Mir gehts mit dem Tastendruck auch nicht anders. Ich hab schon Tage
über Tage in Foren FAQs und der python-hilfe nach Lösungen gesucht und frage mich langsam:
Das Problem muss doch allgemein bekannt und gefragt sein.
Man braucht sowas doch ziemlich oft, eine Abbruchbedingung bei Tastendruck. Wieso gibts denn dafür keine vernünftige Lösung?
Is mir irgendwie unbegreiflich...

Also verbringen wir weiter mit Suchen
Christopy
User
Beiträge: 131
Registriert: Montag 15. Dezember 2003, 22:39

Unter Windows geht sowas mit msvcrt.kbhit().

Unter Linux könnte es mit select.select() funktionieren.
Dazu ein Zitat aus der Linuxgazette:
To wait for a characters on a file (or socket), use select(). If you apply this to stdin then select() will unblock when someone presses a key. If the timeouts are tuned to 0, then it will exit immediately with a failure or success code indicating that a key is ready to be read.

Wenn das nicht funktioniert, kann man evt. noch auf curses zurückgreifen.
The nodelay() option causes getch() to be a non-blocking call.
Antworten