python 打印调用函数名和文件名

import inspect
import sys


def get_current_function_name():
    funcName = sys._getframe().f_back.f_code.co_name  # 获取调用函数名
    print(dir(sys._getframe()))
    print(dir(sys._getframe().f_back.f_code.co_filename))
    print(sys._getframe().f_back.f_code.co_filename,"#",__name__,"#",__file__) #打印调用该函数 语句所在文件和 打印该函数所在模块和打印该函数所在文件名
    #E:/project/script/testmodule/test04.py # script.testmodule.test05 # E:\project\script\testmodule\test05.py
    print(sys._getframe().f_back.f_code.co_names) #('unittest', 'chardet', 'script.testmodule', 'test05', 'get_current_function_name')
    lineNumber = sys._getframe().f_back.f_lineno  # 获取行号

    print(sys._getframe().f_code.co_name,"#########")  # 获取当前函数名
    print(funcName,lineNumber)
    print("####%s.%s invoked" % (__name__, inspect.stack()))
    return inspect.stack()[1][3]

class MyClass:
    def function_one(self):
        print("%s.%s invoked"%(self.__class__.__name__, get_current_function_name()))
if __name__ == "__main__":
    myclass = MyClass()
    myclass.function_one()
    print(sys._getframe().f_code.co_filename)

posted on 2018-12-27 00:05  游荡的鱼  阅读(1998)  评论(0编辑  收藏  举报

导航