是否可以一次迭代检测多个 python 语法错误?
有 2 个语法错误的 Python 文件 test.py:
print 'hello'
test =-
b = 1 + 1
test =+
print 'world'
这段代码只得到第 2 行的第一个语法错误,而不是第 4 行的错误:
import parser
parser.suite(open('test.py').read())
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<string>", line 2
test =-
如何检测 *.py 文件的所有语法错误?(不仅是第一个)
谢谢!
请您参考如下方法:
不,你不能,因为在一个语法错误之后,其余的代码结构将无法再恢复。
以缺少括号为例;是缺少括号还是逗号?下一行的函数调用是否是表达式的一部分有错误?如果缺少逗号,则下一行可能缺少括号。如果缺少括号,则下一行的括号可能过多。这将是两个截然不同的语法错误,它们取决于前一个语法错误的真正含义。
一个地方的语法错误会使其余代码无效,继续解析是没有意义的,至少对于需要生成有效字节码的 Python 而言是这样。
您可以使用 Python linter ;许多可以与您选择的文本编辑器集成。 Python IDE 或 linter 不必生成字节码,并且可以更灵活地处理语法错误(继续检查后续行),并且还可以告诉您其他问题,例如丢失或未使用的导入和变量。
