#python
#питон
Вопрос:
У меня есть server.py который содержит функцию и другие файлы, такие как requestor1.py requestor2.py …. requestorN.py
Server.py содержит функцию :
def callmeforhelp()
return "I am here to help you out!"
и requestor1.py file вызывает функцию callmeforhelp(), и она содержит импорт, необходимый для вызова функции из server.py
Есть ли способ мой server.py знает, какой файл его вызывает?
Что-то похожее, как показано ниже :
Когда requestor1.py вызывает функцию, затем :
def callmeforhelp()
print "Now I am being called by : " caller // caller must contain the value as requestor1.py or even full path of requestor1.py
return "I am here to help you out!"
Ответ №1:
Вот способ получить доступ к локальным атрибутам вызывающего объекта:
import sys
def callmeforhelp():
print("Called from", sys._getframe(1).f_locals['__file__'])
Это особенность CPython и не гарантируется, что она присутствует в других языковых реализациях.
Ответ №2:
Попробуйте это в вашем server
файле:
import inspect
def callmeforhelp():
result = inspect.getouterframes(inspect.currentframe(), 2)
print("Caller is: " str(result[1][1]))
Комментарии:
1. Может ли это вернуть полный путь к файлу?
2. @PrasathGovind: он даст вам адрес. Я попробовал это с этим образцом, и у меня все отлично работает:
main.py, src/requester.py, src/sever.py
.requester.py
вызовет методserver.py
. аmain.py
file — это основной файл , который был вызванrequester.py
. И я начинаю его словами:python main.py
.