Python Material Installation Dokumentation PythonKara Grundlagen Namensräume Funktionen Testen Strings Dictionary Listen Zeitmessungen Zufall Bits+Bytes Module Sockets xml serielle Schnittstelle Python in HTML Turtle xturtle Tkinter OOP Threads Zusicherungen exe Patterns GnuPlot Goto MySQL CGI Dateien Exceptions Grafik Mathematik Fischertechnik Unicode funktional Iterator Sound C Debugger regex Pfade Docstrings Django Bluetooth format Bytecode signal
Pfad: Startseite / Fächer / Informatik / Python / signal
Autor: mk
26.10.2011 19:38:58
241
signal

Beispiel

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

Links