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

时间:2014-04-29 08:51:11

标签: python shell terminal automator

目前,如果我使用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 :(得分:0)

我相信你最好的方法是使用Python调试器:

import pdb

pdb.set_trace()

在你的py脚本中。

此处提供更多信息:

https://docs.python.org/2/library/pdb.html

答案 1 :(得分:0)

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

例如,从here运行错误代码只会向您显示:

1 error on line 2

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

使用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'对象没有属性'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'对象没有属性'extend'”,)
  ('行号:',5)