I realize this isn't yet precisely what you're asking for, but look at the inspect and ast modules:
import ast, inspect def indent_level(): lineno = inspect.currentframe().f_back.f_lineno with open(__file__) as source_file: tree = ast.parse(source_file.read(), filename=__file__) for node in ast.walk(tree): if hasattr(node, 'lineno') and node.lineno == lineno: return node.col_offset def example_usage(): print("first indent_level() = {0}".format(indent_level())) if True: print("second indent_level() = {0}".format(indent_level())) if __name__ == '__main__': example_usage() The indent_level function above returns the textual column offset rather than the logical block level you're asking for, e.g.: first indent_level() = 4 second indent_level() = 8 But hopefully it's a start. Mark -----Original Message----- From: Python-list [mailto:python-list-bounces+mshroyer=awaredigital....@python.org] On Behalf Of Peng Yu Sent: Sunday, March 17, 2013 12:53 AM To: python-list@python.org Subject: How to automatically get the indent level from code? Hi, I want to get the indent level within the code. For example, I want to print 1 within the while loop as the line is indented 1 level. Is it possible to get it within python? while 1: #print the level of indent, which is 1 here. -- Regards, Peng -- http://mail.python.org/mailman/listinfo/python-list -- http://mail.python.org/mailman/listinfo/python-list