http://python.sandtner.org/viewtopic.php?p=8616#8616
Allerdings funktioniert das doch nur bei einem except.
Wie komme ich an die aktuelle Zeilennummer, einfach so?
z.B.
Code: Alles auswählen
print lineno
Code: Alles auswählen
print lineno
Code: Alles auswählen
class Fehler(Exception):
def __init__(self):
import traceback, sys
tb = traceback.format_tb(sys.last_traceback)
print "-"*80
print "Fehler: %s" % inst
print "Startmodul: %s" % sys.argv[0].strip()
print "Zeilennummer: %s" % traceback.tb_lineno(sys.exc_traceback)
print "Dateiname: %s" % tb[0].split(",")[0].strip()[6:-1]
print "-"*80
sys.exit()
raise Fehler
Code: Alles auswählen
tb = traceback.format_tb(sys.last_traceback)
AttributeError: 'module' object has no attribute 'last_traceback'
Code: Alles auswählen
import sys, traceback
class Fehler(Exception):
def __init__(self, value):
self.value = value
exc = traceback.extract_stack()
print "-"*80
print "Fehler: %s" % exc[0][3]
print "Startmodul: %s" % sys.argv[0].strip()
print "Zeilennummer: %s" % exc[0][1]
print "Dateiname: %s" % exc[0][0]
print "-"*80
sys.exit()
def __str__(self):
return repr(self.value)
raise Fehler, "uups"
Code: Alles auswählen
import sys,traceback
class Fehler:
def __init__(self):
exc = traceback.extract_stack()
print "-"*80
print "Fehler: %s" % exc[0][3]
print "Startmodul: %s" % __file__
print "Zeilennummer: %s" % exc[0][1]
print "Dateiname: %s" % exc[0][0]
print "-"*80
sys.exit()
raise Fehler
Code: Alles auswählen
class Fehler:
def __init__(self):
exc = traceback.extract_stack()
print "-"*80
print "Fehler: %s" % exc[-2][3]
print "Startmodul: %s" % __file__
print "Zeilennummer: %s" % exc[-2][1]
print "Dateiname: %s" % exc[-2][0]
print "-"*80
sys.exit()
Code: Alles auswählen
exc[len(exc)-2][1]