Seite 1 von 1
Newbie-Frage: Trace-Infos innerhalb eines Scripts
Verfasst: Dienstag 25. Mai 2004, 09:18
von leoel
Hallo! Bin gerade dabei von PHP auf Python umzusteigen.... Jetzt bin ich auf der Suche nach einem ähnlichen Construct wie in C++ oder eben PHP, mit dem ich mir in einem Script folgende Infos ausgeben kann:
> aktuelle Zeilennummer, in PHP mit "__line__"
> aktuelles File, in PHP mit "__file__"
> aktuelle Funktion, in PHP mit "__function__"
> aktuellle Klasse, in PHP mit "__class__"
> aktuelle MEthode, in PHP mit "__method__"
Für Python habe ich nur __class__ und __dict__ (alle Member der Instanz) gefunden.
Gibt es für "File" und "Line" Möglichkeiten, das herauszufinden?
Danke,
Leo
Re: Newbie-Frage: Trace-Infos innerhalb eines Scripts
Verfasst: Samstag 12. Juni 2004, 10:49
von gerold
leoel hat geschrieben:Gibt es für "File" und "Line" Möglichkeiten, das herauszufinden?
Hallo Leo!
Ich habe mal ein wenig experimentiert und dieser (noch nicht ausgereifte) Code ist dabei herausgekommen:
Code: Alles auswählen
def name_des_startmoduls():
"""Gibt den Namen des vom Benutzer gestarteten Moduls zurueck."""
from sys import argv
return argv[0]
try:
print name_des_startmoduls_falschername()
except Exception, data:
import traceback, sys
tb = traceback.format_tb(sys.exc_traceback)
print "-"*80
print "Fehler: %s" % data
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
Als Ergebnis kommt unter Windows folgendes raus:
Code: Alles auswählen
--------------------------------------------------------------------------------
Fehler: name 'name_des_startmoduls_falschername' is not defined
Startmodul: C:\Dokumente und Einstellungen\Gerold\Desktop\Script1.py
Zeilennummer: 7
Dateiname: C:\Dokumente und Einstellungen\Gerold\Desktop\Script1.py
--------------------------------------------------------------------------------
Vieleicht hilft es dir ja weiter...
mfg
Gerold
Edit: Code in Python-Tags gesetzt und die Variable "inst" durch "data" ausgetauscht.
Verfasst: Montag 14. Juni 2004, 12:29
von leoel
Hallo Gerold!
Danke, ich habs inzwischen auch mit Traceback gemacht,
aber dein Zeug hilft noch ein bisschen weiter.
Dankeschön, Leo
Verfasst: Donnerstag 1. Dezember 2005, 12:16
von Gast
Ich danke euch alle! Nach eurer Vorschlägen bin ich bei unittest.py abgeschaut und ich kann mit traceback viel abfragen
Boostpy
Verfasst: Donnerstag 1. Dezember 2005, 13:27
von jens
Wenn du aus der PHP Ecke kommst und was für's Web machst, dann füge als erstes in dein Skript folgendes ein:
Das "aktiviert" eine art HTML-Traceback, sodas du besser sehen kannst, was schief gelaufen ist. Natürlich muß vorher der Content-type-Header gesendet worden sein...
Re: Newbie-Frage: Trace-Infos innerhalb eines Scripts
Verfasst: Dienstag 20. Dezember 2005, 16:17
von einGast
Hallo,
leoel hat geschrieben:> aktuelle Funktion, in PHP mit "__function__"
Dazu habe ich leider noch nichts gefunden (oder ich bin einfach nur blind
)... Gibt es hierfür auch eine Möglichkeit in Python? Fände ich in manchen Situationen ganz nützlich
Danke schon mal für ein paar Tipps!
MfG,
einGast
Re: Newbie-Frage: Trace-Infos innerhalb eines Scripts
Verfasst: Dienstag 20. Dezember 2005, 16:25
von Leonidas
einGast hat geschrieben:leoel hat geschrieben:> aktuelle Funktion, in PHP mit "__function__"
Dazu habe ich leider noch nichts gefunden (oder ich bin einfach nur blind
)... Gibt es hierfür auch eine Möglichkeit in Python? Fände ich in manchen Situationen ganz nützlich
Klar gibts das, ist allerdings etwas versteckt, da es selten gebraucht wird:
Code: Alles auswählen
#!/usr/bin/env python
# -*- encoding: latin-1 -*-
import sys
def detect_name():
frame = sys._getframe()
print frame.f_code.co_name
if __name__ == '__main__':
detect_name()