blog.monophile.net

Takaaki Yamamoto

東京工業大学において計算機科学と応用数学を学び、情報科学芸術大学院大学[IAMAS]においてメディア表現を専攻し修了。 現在は digitiminimi Inc. において、インフラエンジニアとして生計をたててている。 また、計算を主題に制作を行い、現代音楽作品や公共インスタレーション作品など技術提供を行う。 三輪眞弘に師事する。

List

pythonでソースファイル名と関数名と行数を出力

pythonだとエラー出力がわかりやすいので、今まであまり困らなかったのですが、調べて見ました。

inspect_test.py

inspectというモジュールを使えば良いみたいです。 ファイル名と関数名と行数をタプルで返す関数filename_funcname_linenoは以下の様になります。

import inspect

def filename_funcname_lineno():
    funcname = inspect.currentframe().f_back.f_code.co_name
    filename = inspect.currentframe().f_back.f_code.co_filename
    lineno = inspect.currentframe().f_back.f_lineno
    return filename, funcname, lineno

def hoge():
    print "foo"
    print filename_funcname_lineno()
    print "bar"

if __name__ == "__main__":
    hoge()

上記を実行すると以下のように出力されます。

foo
('inpect_test.py', 'hoge', 11)
bar

参考URL