# script.py
greeting = "hi"
import inspect; import traceback; print traceback.format_stack(inspect.currentframe())[-1]
print greeting
脚本第四行的代码打印出文件名、行号和当前行:
$ python script.py
File "script.py", line 4, in <module>
import inspect; import traceback; print traceback.format_stack(inspect.currentframe())[-1]
hi
但是我怎样才能打印出下一行(print greeting
)而不是当前行的行号和内容?
这将便于调试,一个单行显示它下面的行的代码。
编辑
通过本的回答,我得到了这个可怕的生物:
import inspect; import sys; _lne = inspect.currentframe().f_lineno; print "{0}, line {1}:".format(__file__, _lne+1); print open(sys.argv[0]).readlines()[_lne].strip()
它有 166 个字符长,非常冗长。请注意,IndexError
当没有下一行时它会引发。
运行python script.py
将打印出以下内容
script.py, line 5:
print greeting
hi
我希望我发布的原始行中的一些细微更改可能会导致所需的行为,因为其中包括文件名和编号,而无需显式打印这些。它提供的缩进也不是不受欢迎的。