我正在尝试使用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>
答案 0 :(得分:1)
您正在打印通用的SyntaxError类&#39; message属性,而不是抛出的实际异常中的属性。
尝试
except SyntaxError as syntax_error:
return syntax_error.message
请注意,有一个函数在成功时返回True,或者在失败时返回一个字符串,这有点奇怪。