How to determine file, function and line number?

前端 未结 7 1112
清歌不尽
清歌不尽 2020-11-28 06:14

In C++, I can print debug output like this:

printf(
   \"FILE: %s, FUNC: %s, LINE: %d, LOG: %s\\n\",
   __FILE__,
   __FUNCTION__,
   __LINE__,
   logmessage         


        
7条回答
  •  轻奢々
    轻奢々 (楼主)
    2020-11-28 07:00

    There is a module named inspect which provides these information.

    Example usage:

    import inspect
    
    def PrintFrame():
      callerframerecord = inspect.stack()[1]    # 0 represents this line
                                                # 1 represents line at caller
      frame = callerframerecord[0]
      info = inspect.getframeinfo(frame)
      print(info.filename)                      # __FILE__     -> Test.py
      print(info.function)                      # __FUNCTION__ -> Main
      print(info.lineno)                        # __LINE__     -> 13
    
    def Main():
      PrintFrame()                              # for this line
    
    Main()
    

    However, please remember that there is an easier way to obtain the name of the currently executing file:

    print(__file__)
    

提交回复
热议问题