반응형
inspect를 사용하여 Python에서 수신자로부터 호출자 정보를 얻는 방법은 무엇입니까?
수신자로부터 발신자 정보 (어떤 파일 / 어떤 줄)를 받아야합니다. 나는 목적을 위해 inpect 모듈을 사용할 수 있다는 것을 배웠지 만 정확히 방법은 아닙니다.
검사로 정보를 얻는 방법은 무엇입니까? 아니면 정보를 얻을 수있는 다른 방법이 있습니까?
import inspect
print __file__
c=inspect.currentframe()
print c.f_lineno
def hello():
print inspect.stack
?? what file called me in what line?
hello()
호출자의 프레임이 현재 프레임보다 한 프레임 높습니다. inspect.currentframe().f_back
발신자의 프레임을 찾는 데 사용할 수 있습니다 . 그런 다음 inspect.getframeinfo 를 사용 하여 호출자의 파일 이름과 줄 번호를 가져옵니다.
import inspect
def hello():
previous_frame = inspect.currentframe().f_back
(filename, line_number,
function_name, lines, index) = inspect.getframeinfo(previous_frame)
return (filename, line_number, function_name, lines, index)
print(hello())
# ('/home/unutbu/pybin/test.py', 10, '<module>', ['hello()\n'], 0)
inspect.stack
대신 사용 하는 것이 좋습니다 .
import inspect
def hello():
frame,filename,line_number,function_name,lines,index = inspect.stack()[1]
print(frame,filename,line_number,function_name,lines,index)
hello()
단일 매개 변수로 스택 프레임을 다루는 간단한 스택 프레임 주소 지정으로 검사 용 래퍼를 게시했습니다 spos
.
예 pysourceinfo.PySourceInfo.getCallerLinenumber(spos=1)
spos=0
lib-function은 어디 spos=1
에서 호출자, spos=2
호출자 등입니다.
호출자가 주 파일 인 경우 sys.argv [0]을 사용하면됩니다.
반응형
'Programing' 카테고리의 다른 글
Mockito-스파이 대 모의 (0) | 2020.10.27 |
---|---|
Postgres 캐시 / 버퍼를보고 지우시겠습니까? (0) | 2020.10.27 |
Postgres : 타임 스탬프를 가장 가까운 분으로 올림 또는 내림하는 방법은 무엇입니까? (0) | 2020.10.27 |
Python Pandas는 선택한 열의 행별 최대 값에 대한 열을 추가합니다. (0) | 2020.10.27 |
자바 : NIO와 NIO.2의 차이점은 정확히 무엇입니까? (0) | 2020.10.27 |