首页 > 解决方案 > 为`traceback.format_exc()`构建快捷方式

问题描述

所以我这样使用traceback.format_exc()

try:
   # Some code
except:
   traceback_msg = '%s' % traceback.format_exc()
   print(traceback_msg)
   # Doing some stuff with it

经常在我的代码中将其输出到其他文件/流中,并且通过编写代码我厌倦了继续输入它。有没有一种简单的方法来定义一个全局快捷方式/异常处理程序,它可以保持关注并且易于从各个地方调用?

标签: pythonpython-3.xshortcut

解决方案


您可以在目录PYTHONPATH中使用以缩短名称导入的模块(并且其本身具有短名称)。

在你的设置脚本中设置环境变量PYTHONPATH指向一个目录,例如.bashrc在 Linux 中,把

export PYTHONPATH=/path/to/my_dir:$PYTHONPATH

(如果任何值已经存在,您可能想要进行测试,如果不存在,请在此处取消冒号,但这并不重要。)

并创建/path/to/my_dir/tb.py包含

from traceback import format_exec as fe

然后你可以交互地做,例如:

>>> import tb
>>> try:
...    a = 1 / 0
... except:
...    msg = tb.fe()
...    print(">>>", msg)

给予

>>> Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
ZeroDivisionError: division by zero

请记住,您可能会与您尝试使用tb.py的另一个模块发生冲突。tb.py也许为了安全起见,不要一直设置PYTHONPATH,但是(这里又是 Linux 示例),在你的.bashrc.

alias p='env PYTHONPATH=/path/to/my_dir:$PYTHONPATH python'

以便仅在您使用p别名启动 python 时设置它。

还有一个环境变量PYTHONSTARTUP,您可以将其指向一个脚本,该脚本在您启动 python 时运行,尽管在此示例中未使用。


推荐阅读