Comment puis-je obtenir le nom du fichier et le numéro de ligne dans un script python.
Exactement les informations de fichier que nous obtenons à partir d'un suivi d'exception. Dans ce cas sans soulever d'exception.
Grâce à mcandre, la réponse est:
#python3
from inspect import currentframe, getframeinfo
frameinfo = getframeinfo(currentframe())
print(frameinfo.filename, frameinfo.lineno)
import inspect inspect.getframeinfo(inspect.currentframe()).lineno
currentframe()
est appelé, ce qui signifie que vous ne pouvez plus simplifier celagetframeinfo(currentframe()).lineno
(si vous ne vous souciez que du numéro de ligne et non du nom du fichier). Voir docs.python.org/2/library/inspect.html#inspect.currentframeLe fait
currentframe().f_back
que vous l'utilisiez dépend de l' utilisation ou non d'une fonction.Appelez directement inspect:
Appeler une fonction qui le fait pour vous:
la source
Pratique si utilisé dans un fichier commun - imprime le nom du fichier, le numéro de ligne et la fonction de l'appelant:
la source
Nom de fichier :
Ligne :
(pas
inspect.currentframe().f_back.f_lineno
comme mentionné ci-dessus)la source
NameError: global name '__file__' is not defined
sur mon interpréteur Python:Python 2.7.6 (default, Sep 26 2014, 15:59:23)
. Voir stackoverflow.com/questions/9271464/…Mieux vaut aussi utiliser sys-
La sortie est:
la source
Juste pour contribuer,
il y a un
linecache
module en python, voici deux liens qui peuvent aider.documentation du module
linecache code source linecache
Dans un sens, vous pouvez "vider" un fichier entier dans son cache et le lire avec les données linecache.cache de la classe.
Pour plus d'informations, pour la gestion des erreurs, vous pouvez simplement utiliser
la source
la source
__file__
: Voir stackoverflow.com/questions/3056048/…Dans Python 3, vous pouvez utiliser une variante sur:
Dans le code, vous pouvez alors utiliser:
Produire:
Où les 123 et 124 sont les lignes à partir desquelles les appels sont effectués.
la source
Voici ce qui fonctionne pour moi pour obtenir le numéro de ligne en Python 3.7.3 dans VSCode 1.39.2 (
dmsg
est mon mnémonique pour le message de débogage):Pour appeler en affichant une variable
name_s
et sa valeur:La sortie ressemble à ceci:
la source