Fehleranalyse bei execfile()
Verfasst: Montag 1. März 2004, 14:05
Hallo Leute!
Folgendes:
Ich habe 2 Dateien: a.py und b.py
In a.py sind Strukturen vorhanden wie zb (Datei-Auszug):
In b.py sind entsprechende Strukturen definiert wie zb (Datei-Auszug):
In b.py lese ich die Datei a.py ein und will sie überprüfen, ob sie auf meine Struktur passt, zb:
Wenn jetzt was in a.py nicht stimmt (also die Struktur nicht mit meiner Definition übereinstimmt), bekomme ich einen AssertionError, den ich abfangen kann und von dem ich alles weiss (sys.exc_info())
Ich würde aber gern an die Zeilennummer in der eingelesenen a.py kommen, wo der Fehler auftrat.
Das Problem ist nur, dass mir execfile() keine Fehler ausspuckt, weil die Syntax ja stimmt, aber die Struktur halt nicht...
Ich hoffe das Problem wurde verstanden und es hat vielleicht jemand eine Idee
Besten Dank schonmal und Grüsse
Felix
Folgendes:
Ich habe 2 Dateien: a.py und b.py
In a.py sind Strukturen vorhanden wie zb (Datei-Auszug):
Code: Alles auswählen
{'collist': [72, 83],
'maxcol': 83,
'maxrow': 76,
'mincol': 72,
'minrow': 58,
'trackid': 'Oval_1',
'type': 'rect'}
Code: Alles auswählen
class MAPPING(StructuredType):
"""MAPPING(domain, range) -> mapping type t
'domain' and 'range' must be stypes
x in t <=> all k in x : (k in domain) and (x[k] in range)
"""
def __init__(self, domain_type, range_type):
self.domainType = domain_type
self.rangeType = range_type
def __contains__(self, arg):
global _depthlevel
_depthlevel+=1
if not isinstance(arg, type({})):
msg="ERROR (MAPP): %s is not a mapping (dicctionary)"%short(arg)
_add_msg(msg)
_depthlevel-=1
return 0
for key, val in arg.iteritems():
if key not in self.domainType:
msg="ERROR (MAPP): %s is not of domain type %s"%(short(key),repr(self.domainType))
_add_msg(msg)
_depthlevel-=1
return 0
if val not in self.rangeType:
msg="ERROR (MAPP): %s is not of range type %s"%(short(key),repr(self.rangeType))
_add_msg(msg)
_depthlevel-=1
return 0
_depthlevel-=1
return 1
Code: Alles auswählen
test = {}
execfile("a.py", {}, test)
assert test in MAPPING
Ich würde aber gern an die Zeilennummer in der eingelesenen a.py kommen, wo der Fehler auftrat.
Das Problem ist nur, dass mir execfile() keine Fehler ausspuckt, weil die Syntax ja stimmt, aber die Struktur halt nicht...
Ich hoffe das Problem wurde verstanden und es hat vielleicht jemand eine Idee
Besten Dank schonmal und Grüsse
Felix