如何验证Python脚本的语法?

2024-05-23 16:07:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我只想让Python脚本以最简单的方式询问“我刚刚生成的Python代码在语法上有效吗?”在

我试过了:

try:  
    import py_compile  
    x = py_compile.compile(generatedScriptPath, doraise=True)  
    pass  

except py_compile.PyCompileError, e:
    print str(e)
    pass

但是,即使是包含无效Python的文件,也不会抛出异常,然后是x == None。在


Tags: 代码pyimport脚本true方式语法pass
1条回答
网友
1楼 · 发布于 2024-05-23 16:07:17

不需要使用^{}。它的预期用途是从给定的源文件中编写字节码文件。事实上,如果您没有在目录中写入的权限,它将失败,因此您可能会得到一些误报。在

为了只解析并验证语法,可以使用^{}模块来^{}文件的内容,或者直接调用^{}内置函数。在

import ast

def is_valid_python_file(fname):
    with open(fname) as f:
        contents = f.read()
    try:
        ast.parse(contents)
        #or compile(contents, fname, 'exec', ast.PyCF_ONLY_AST)
        return True
    except SyntaxError:
        return False

确保执行该文件,因为如果您不能信任其内容(如果您甚至不知道该文件是否包含有效语法,我怀疑即使您生成了这些内容,您也不能真正信任这些内容),那么您可能最终执行恶意代码。在

相关问题 更多 >