2016-09-05 9 views
-1

私は、astライブラリを使用して文字列に格納されたPythonコードを評価しようとしていますが、SyntaxExceptionエラーのメッセージ属性にアクセスすると、実際の値この値を印刷するにはどうすればよいですか?SyntaxError例外Pythonの実際の値を見つける

ここで私が使用しているコードです:

#!/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

あなたはジェネリックでSyntaxErrorクラスのメッセージ属性ではなく、実際のものを印刷しているが、スローされた例外。

は、それが成功した場合にTRUEを返す関数、または失敗した場合に文字列を持つように少し奇妙だと

except SyntaxError as syntax_error: 
    return syntax_error.message 

注意してみてください。

関連する問題