In Python, how do I obtain the current frame?

I use these little guys for debugging and logging:

import os
import sys

def LINE( back = 0 ):
    return sys._getframe( back + 1 ).f_lineno
def FILE( back = 0 ):
   return sys._getframe( back + 1 ).f_code.co_filename
def FUNC( back = 0):
    return sys._getframe( back + 1 ).f_code.co_name
def WHERE( back = 0 ):
   frame = sys._getframe( back + 1 )
   return "%s/%s %s()" % ( os.path.basename( frame.f_code.co_filename ), 
                           frame.f_lineno, frame.f_code.co_name )

The best answer would be to use the inspect module; not a private function in sys.

import inspect

current_frame = inspect.currentframe()

import sys    
sys._getframe(number)

The number being 0 for the current frame and 1 for the frame up and so on up.

The best introduction I have found to frames in python is here

However, look at the inspect module as it does most common things you want to do with frames.

Tags:

Python