如何通过Automator运行Python脚本以查看调试/错误信息?
目前,如果我使用 Run shell script
并在这里启动 Python 脚本:
/usr/bin/python /Users/myuser/script.py "$1"
如果脚本执行失败,出现了异常,Automator 会返回一个错误信息,但这个信息没有任何用处:
Run Shell Script failed - 1 error
Traceback (most recent call last):
有没有办法运行这个 shell 脚本,看到所有的调试信息(或者说在终端中运行 Python 脚本)?
2 个回答
0
当程序出错时,程序会停止运行,并且输出的信息会被简化成一个错误的简短版本(这个版本通常没有什么用)。
比如,运行这里的有问题的代码链接,你只会看到这样的信息:
为了避免这种情况,你需要捕捉所有的错误。
可以使用 try: ... except
这样的结构:
try:
l = [[1, 2, 3], [4, 5, 6], [7], [8, 9]]
reduce(lambda x, y: x.extend(y), l)
except Exception as error:
print(repr(error))
这样你就能看到以下输出:
AttributeError("'NoneType' object has no attribute 'extend'",)
如果你想要更多的信息,可以稍微修改一下代码:
from sys import exc_info
from traceback import extract_tb
try:
l = [[1, 2, 3], [4, 5, 6], [7], [8, 9]]
reduce(lambda x, y: x.extend(y), l)
except Exception as error:
print(repr(error))
print("Line number: ", extract_tb(exc_info()[2])[0][1])
输出结果是:
AttributeError("'NoneType' object has no attribute 'extend'",)
('行号: ', 5)
0
我觉得你接下来的最佳方法是使用Python调试器,具体可以在你的py脚本中加上:
import pdb
pdb.set_trace()
更多信息可以在这里找到: