我似乎无法使用真正错误的python代码生成此异常。
我使用了this question中的代码来检查我的工作。在这里,只需稍作修改:
import py_compile
def check(python_file):
try:
file = open(python_file, 'r')
py_compile.compile(python_file, doraise=True)
except py_compile.PyCompileError:
print("<"+python_file+"> does not contain syntactically correct Python code")
else:
print("Compiled " + python_file + " with no issues.")
check("example.py")
example.py文件仅包含:
print ("This is fine.")
prant ("This should be an error.")
'prant'而不是'print'是一个简单的语法错误,如果我运行'python example.py',则会看到:
This is fine.
Traceback (most recent call last):
File "example.py", line 2, in <module>
prant ("This should be an error.")
NameError: name 'prant' is not defined
如果我在顶部的“ compiler.py”处调用该脚本,然后运行“ python editor.py”,则将说明没有问题。
我已经证实,如果括号或引号不匹配,compiler.py将抱怨语法正确性,因此它确实捕获了 some 问题。但是我希望能够以与运行“ python example.py”相同的方式来检测文件何时有错误。基本上,如果使用“ python”运行它时出现错误,我希望能够检测到。
有没有办法做到这一点?为何在出现语法错误时未引发PyCompileError?