How to validate the syntax of a Python script?
本问题已经有最佳答案,请猛点这里访问。
我只是希望我的Python脚本能够以最简单的方式询问"我刚刚生成语法上有效的Python的Python代码吗?"
我试过了:
1 2 3 4 5 6 7 8 | try: import py_compile x = py_compile.compile(generatedScriptPath, doraise=True) pass except py_compile.PyCompileError, e: print str(e) pass |
但即使使用包含无效Python的文件,也不会抛出异常,然后
无需使用
要解析并验证语法,可以使用
1 2 3 4 5 6 7 8 9 10 11 | 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 |
确保不执行该文件,因为如果您不能信任其内容(如果您甚至不知道该文件是否包含有效语法,我怀疑您实际上可以信任内容,即使您生成它们)也可能最终执行恶意 码。