如何使用Automator运行python脚本以查看调试/错误消息?

如何使用Automator运行python脚本以查看调试/错误消息?,python,shell,terminal,automator,Python,Shell,Terminal,Automator,当前,如果我使用运行shell脚本并在那里启动python脚本: /usr/bin/python /Users/myuser/script.py "$1" 如果由于发生异常而导致脚本执行失败,Automator将返回错误,但不会显示任何内容: Run Shell Script failed - 1 error Traceback (most recent call last): 有没有办法运行shell脚本来查看所有调试消息(或者,在那里运行Terminal并运行python脚本)?我认为最

当前,如果我使用
运行shell脚本
并在那里启动python脚本:

/usr/bin/python /Users/myuser/script.py "$1"
如果由于发生异常而导致脚本执行失败,Automator将返回错误,但不会显示任何内容:

Run Shell Script failed - 1 error
Traceback (most recent call last):

有没有办法运行shell脚本来查看所有调试消息(或者,在那里运行Terminal并运行python脚本)?

我认为最好的方法是使用python调试器:

import pdb

pdb.set_trace()
在py脚本中

更多信息请点击此处:


当发生错误时,程序执行停止,输出被错误的缩写版本覆盖(该版本不提供有用信息)

例如,从运行错误代码只会显示以下内容:

您需要捕获所有错误以防止这种情况发生

使用
尝试:。。。除了

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'对象没有属性'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(“非类型”对象没有属性“扩展”)
(“行号:”,5)