查找SyntaxError异常python的实际值

查找SyntaxError异常python的实际值,python,Python,我试图使用ast库对存储在字符串中的python代码求值,但是在访问生成的SyntaxException错误的message属性时,我只能打印对对象的引用,而不能打印实际值。如何打印此值 以下是我使用的代码: #!/usr/bin/python import ast def is_valid_python(code): try: ast.parse(code) except SyntaxError: return str(SyntaxErr

我试图使用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>

您正在打印泛型SyntaxError类的消息属性,而不是来自引发的实际异常的属性

试一试

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

except SyntaxError as syntax_error:
    return syntax_error.message