![]() |
|||
| HSG |
|
ohne signal
import sys
defaultname = 'wurzel.py'
try:
dateiname = sys.argv[1]
except:
try: # sonst stuerzt IDLE ab
inhalt = sys.stdin.read() # muss auf Konsole notfalls mit STRG-D beendet werden
if inhalt == '\n':
dateiname = None
else:
dateiname = defaultname
except:
dateiname = defaultname
if dateiname != None:
datei = open(dateiname,'r')
inhalt = datei.read()
datei.close()
mit signal
import sys
import signal
def getnameinhalt(defaultname):
"""
versucht 1 Sekunde lang den String inhalt von stdin zu lesen,
wenn das erfolgreich ist, wird (None,inhalt) zurueckgegeben,
wenn der timeout abgelaufen ist, wird (defaultname,None)
zurueckgegeben
funktioniert vermutlich unter Windows nicht, bringt IDLE zum
Absturz
"""
def timeout_handler(signum,frame):
raise Exception
signal.signal(signal.SIGALRM,timeout_handler)
signal.alarm(1)
try:
inhalt = sys.stdin.read()
dateiname = None
except:
(dateiname,inhalt) = (defaultname,None)
return (dateiname,inhalt)
try:
dateiname = sys.argv[1]
except:
(dateiname,inhalt) = getnameinhalt('wurzel.py')
if dateiname != None:
datei = open(dateiname,'r')
inhalt = datei.read()
datei.close()
stdinouttest.py, stdinouttest0.py