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