Je veux obtenir le nom de fichier / la fonction qui a appelé la fonction en cours de traitement.
Utilisez inspect.
caller_file.py
import callee_file
def main():
callee_file.callee_function()
main()
callee_file.py
import inspect
def callee_function():
# print(inspect.stack())
print(inspect.stack()[1].filename)
print(inspect.stack()[1].function)
Les appels sont stockés dans inspect.stack par ordre d'appel le plus lent. Si vous décommentez la 4ème ligne, le tableau suivant sera généré.
[
FrameInfo(frame=<frame at 0x7fa68460f050, file '/path-to-dir/callee_file.py', line 4, code callee_function>, filename='/path-to-dir/callee_file.py', lineno=4, function='callee_function', code_context=[' print(inspect.stack())\n'], index=0),
FrameInfo(frame=<frame at 0x10cc17650, file 'caller_file.py', line 5, code main>, filename='caller_file.py', lineno=5, function='main', code_context=[' callee_file.callee_function()\n'], index=0),
FrameInfo(frame=<frame at 0x10ca61450, file 'caller_file.py', line 8, code <module>>, filename='caller_file.py', lineno=8, function='<module>', code_context=['main()\n'], index=0)
]
La première est l'information sur print (inspect.stack ())
sur la 4ème ligne de callee_file.py,
La seconde est l'information de callee_file.callee_function ()
sur la 5ème ligne de caller_file.py
Le troisième est l'information de main ()
sur la 8ème ligne de caller_file.py.
Puisque nous voulons les informations de l'appel de fonction précédent, nous avons besoin de ʻinspect.stack () [1] pour obtenir les informations du deuxième tableau. Les propriétés de ʻinspect.stack () [1]
sont les suivantes, mais cette fois, ce serait bien si nous pouvions obtenir le nom du fichier et le nom de la fonction.
Utilisez ʻinspect.stack () [1] .filename et ʻinspect.stack () [1] .function
.
En passant, vous pouvez également obtenir le numéro de séquence, vous pouvez donc utiliser ʻinspect.stack () [1] [1] et ʻinspect.stack () [1] [3]
.
https://stackoverflow.com/questions/900392/getting-the-caller-function-name-inside-another-function-in-python
Recommended Posts