查找SyntaxError异常python的实际值

时间:2016-09-05 13:11:12

标签: python

我正在尝试使用ast库来评估存储在字符串中的python代码,但是当访问产生的SyntaxException错误的message属性时,我只能打印对象的引用而不是实际值。如何打印此值?

这是我正在使用的代码:

#!/usr/bin/python

import ast

def is_valid_python(code):
    try:
         ast.parse(code)
    except SyntaxError:
         return str(SyntaxError.message)
    return True

code = 'print("hello"")'

print(is_valid_python(code))

,打印的信息是:

<attribute 'message' of 'exceptions.BaseException' objects>

1 个答案:

答案 0 :(得分:1)

您正在打印通用的SyntaxError类&#39; message属性,而不是抛出的实际异常中的属性。

尝试

except SyntaxError as syntax_error:
    return syntax_error.message

请注意,有一个函数在成功时返回True,或者在失败时返回一个字符串,这有点奇怪。