Wie kann ich den Dateinamen und die Zeilennummer im Python-Skript erhalten?
Genau die Dateiinformationen, die wir von einem Ausnahme-Traceback erhalten. In diesem Fall ohne Ausnahme.
Dank mcandre lautet die Antwort:
#python3
from inspect import currentframe, getframeinfo
frameinfo = getframeinfo(currentframe())
print(frameinfo.filename, frameinfo.lineno)
import inspect inspect.getframeinfo(inspect.currentframe()).lineno
currentframe()
es aufgerufen wird, was bedeutet, dass Sie dies nicht mehr vereinfachen können alsgetframeinfo(currentframe()).lineno
(wenn Sie sich nur um die Zeilennummer und nicht um den Dateinamen kümmern). Siehe docs.python.org/2/library/inspect.html#inspect.currentframeOb Sie verwenden,
currentframe().f_back
hängt davon ab, ob Sie eine Funktion verwenden oder nicht.Rufen Sie inspect direkt an:
Aufrufen einer Funktion, die dies für Sie erledigt:
quelle
Praktisch, wenn es in einer gemeinsamen Datei verwendet wird - druckt Dateiname, Zeilennummer und Funktion des Anrufers:
quelle
Dateiname :
Zeile :
(nicht
inspect.currentframe().f_back.f_lineno
wie oben erwähnt)quelle
NameError: global name '__file__' is not defined
auf meinem Python-Interpreter :Python 2.7.6 (default, Sep 26 2014, 15:59:23)
. Siehe stackoverflow.com/questions/9271464/…Besser auch sys verwenden-
Die Ausgabe ist:
quelle
Nur um einen Beitrag zu leisten,
Es gibt ein
linecache
Modul in Python, hier sind zwei Links, die helfen können.Dokumentation zum Linecache- Modul
Linecache-Quellcode
In gewisser Weise können Sie eine ganze Datei in ihren Cache "sichern" und sie mit linecache.cache-Daten aus der Klasse lesen.
Für zusätzliche Informationen, zur Fehlerbehandlung, können Sie einfach verwenden
quelle
quelle
__file__
: Siehe stackoverflow.com/questions/3056048/…In Python 3 können Sie eine Variation verwenden für:
Im Code können Sie dann verwenden:
Produzieren:
Wobei die 123 und 124 die Leitungen sind, von denen aus die Anrufe getätigt werden.
quelle
Folgendes funktioniert für mich, um die Zeilennummer in Python 3.7.3 in VSCode 1.39.2 zu erhalten (
dmsg
ist meine Mnemonik für Debug- Meldungen ):So rufen Sie das Anzeigen einer Variablen
name_s
und ihres Werts auf:Die Ausgabe sieht folgendermaßen aus:
quelle