# script.py
greeting = "hi"
import inspect; import traceback; print traceback.format_stack(inspect.currentframe())[-1]
print greeting
スクリプトの 4 行目のコードは、ファイル名、行番号、および現在の行を出力します。
$ 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
次の行がない場合はan が発生することに注意してください。
実行python script.py
すると、次のように出力されます
script.py, line 5:
print greeting
hi
私が投稿した元の行の小さな変更が、これらを明示的に印刷する必要なしにファイル名と番号を含んでいたため、望ましい動作につながることを願っています。そして、それが提供するインデントも歓迎されませんでした.