我想知道是否可以检查Python代码是否具有正确的语法,而不是运行它,以及是否可以从Python程序中检查。源代码可以在文件中,也可以在变量中更好。
应用程序如下:我有一个简单的文本编辑器,嵌入在我的应用程序中,用于编辑Python脚本。当语法不正确时,我想添加警告。
我目前的想法是尝试导入文件并捕获包含错误行的SyntaxError
异常。但我不希望它完全执行。有什么想法吗?
答案 0 :(得分:4)
这是ast.parse
的工作:
>>> import ast
>>> ast.parse('print 1') # does not execute
<_ast.Module at 0x222af10>
>>> ast.parse('garbage(')
File "<unknown>", line 1
garbage(
^
SyntaxError: unexpected EOF while parsing
答案 1 :(得分:1)
我刚刚发现我可以使用compile function。但我愿意接受更好的建议。
import sys
# filename is the path of my source.
source = open(filename, 'r').read() + '\n'
try:
compile(source, filename, 'exec')
except SyntaxError as e:
# do stuff.
答案 2 :(得分:1)
您可以使用PyLint并在保存文件时调用它,它会检查该文件是否有错误(它可以检测到的不仅仅是语法错误,请查看文档)。