【发布时间】:2013-02-08 15:30:30
【问题描述】:
有没有一种简单的方法可以让异常的消息在命令行上着色?例如
def g(): f()
def f(): 1/0
g()
给出错误
Traceback (most recent call last):
File "test.py", line 3, in <module>
g()
File "test.py", line 1, in g
def g(): f()
File "test.py", line 2, in f
def f(): 1/0
ZeroDivisionError: integer division or modulo by zero
我希望在终端上对“整数除法或模除以零”进行着色或突出显示,以便我可以快速从长追溯中找出它(仅限 Linux)。理想情况下,我不想为每个异常编写一个自定义类,而是以某种方式捕获并格式化所有类型。
编辑: cmets 中链接的问题提供了有关如何使用外部 软件解决问题的示例,但我对内部 Python 解决方案感兴趣。
【问题讨论】:
-
@MartijnPieters 里面有很多很好的信息,我可能会用到,但它们似乎都涉及 python 的解决方案 outside,即在代码完成后突出显示被运行。我正在寻找做一些内部的事情(我会相应地编辑问题)。
-
你必须连接你自己的异常处理程序,然后可能通过 pygments 运行回溯。
-
@MartijnPieters 你刚才说的大概就是我要问的。我不确定我会怎么做。
-
如果您使用的终端支持它,也许您可以在异常消息中嵌入ANSI escape sequences。可能有一个模块。
-
这是table 的 ANSI 转义序列——很多人甚至不需要模块来完成它。