Reputation: 1066
Simple question – can I print the source code of this if
?
if __name__ == '__main__':
# ...
# this is the `if` I want to print
# V
if args and args[0][0] == '-':
if args[0] in ('--help','-h','-?'):
print_source_of_block(level=2)
icase = 'i' in args[0]
desc = 'd' in args[0]
args = args[1:]
Please don't ask me why I need it, nor give me advice on how to write user help. I want to know it because I'm curious.
Upvotes: 0
Views: 67
Reputation: 281996
Yeah, that's doable. Here's a quick sketch of how you could do it and what tools would be involved:
print_source_of_block
's caller with inspect.currentframe().f_back
.inspect.getframeinfo
.ast.parse
to parse the file, ortokenize.tokenize
to tokenize it.Upvotes: 1
Reputation: 61
Might want to look at the inspect
module (https://docs.python.org/2/library/inspect.html). Specifically, the inspect.getsource(object)
method.
Upvotes: 2