如何判断字符串是否包含有效的Python代码

时间:2012-08-07 22:03:09

标签: python syntax python-3.x

如果我有一串Python代码,如何判断它是否有效,即如果在Python提示符下输入,它会引发一个SyntaxError?我认为使用compiler.parse会起作用,但显然在Python 3中已经删除了该模块。有没有办法在Python 3中运行它。显然,我不想执行代码,只是检查它的语法。

2 个答案:

答案 0 :(得分:19)

使用ast.parse

import ast
def is_valid_python(code):
   try:
       ast.parse(code)
   except SyntaxError:
       return False
   return True

>>> is_valid_python('1 // 2')
True
>>> is_valid_python('1 /// 2')
False

答案 1 :(得分:3)

编译器模块现在是built-in

compile(source, filename, mode[, flags[, dont_inherit]])
     

将源代码编译为代码或AST对象。代码对象可以是   由exec语句执行或通过调用eval()进行评估。资源   可以是字符串或AST对象。请参阅ast模块   有关如何使用AST对象的信息的文档。

AST解析器现在是seperate module

ast.parse(expr, filename='<unknown>', mode='exec')
     

将表达式解析为AST节点。相当于compile(expr, filename, mode, ast.PyCF_ONLY_AST)