在Python中检查Python语法

时间:2013-12-10 17:04:59

标签: python python-import

我想知道是否可以检查Python代码是否具有正确的语法,而不是运行它,以及是否可以从Python程序中检查。源代码可以在文件中,也可以在变量中更好。

应用程序如下:我有一个简单的文本编辑器,嵌入在我的应用程序中,用于编辑Python脚本。当语法不正确时,我想添加警告。

我目前的想法是尝试导入文件并捕获包含错误行的SyntaxError异常。但我不希望它完全执行。有什么想法吗?

3 个答案:

答案 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并在保存文件时调用它,它会检查该文件是否有错误(它可以检测到的不仅仅是语法错误,请查看文档)。