29.9. traceback — スタックトレースの表示または取得
関数hogehogeは文字列を戻り値として返すほうが流用できるので好みですが。
mod.py
Python
1# -*- coding: utf-8 -*-
2import traceback
3import re
4
5
6def hogehoge() -> None:
7 for line in traceback.format_stack(limit=2):
8 m = re.match('\s*File\s"(.*)"', line)
9 assert m is not None
10 print(m.group(1))
11 return
12
13
14def main():
15 hogehoge()
16
17
18if __name__ == "__main__":
19 main()
20
exsample.py
Python
1# -*- coding: utf-8 -*-
2import mod
3
4
5def main():
6 mod.hogehoge()
7
8
9if __name__ == "__main__":
10 main()
11
■参考情報
6.2. re — 正規表現操作
2018/03/18追記
sys.argv[0] が使えるのを忘れていました。。
追記:取得できるのはメインモジュールのモジュール名のみです
LouiS0616さんへコード指摘ありがとうございました。
Python
1# -*- coding: utf-8 -*-
2import traceback
3import re
4import sys
5
6
7def executable_path() -> None:
8 print(sys.argv[0])
9
10
11def hogehoge() -> None:
12 for line in traceback.format_stack(limit=2):
13 m = re.match('\s*File\s"(.*)"', line)
14 assert m is not None
15 print(m.group(1))
16 return
17
18
19def main():
20 #hogehoge()
21 executable_path()
22
23
24if __name__ == "__main__":
25 main()
Python
1# -*- coding: utf-8 -*-
2import mod
3
4
5def main():
6 #mod.hogehoge()
7 mod.executable_path()
8
9
10if __name__ == "__main__":
11 main()
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/03/18 01:14
退会済みユーザー
2018/03/18 01:49