2024-05-23 16:07:17 发布
网友
我只想让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。在
x == None
不需要使用^{}。它的预期用途是从给定的源文件中编写字节码文件。事实上,如果您没有在目录中写入的权限,它将失败,因此您可能会得到一些误报。在
为了只解析并验证语法,可以使用^{}模块来^{}文件的内容,或者直接调用^{}内置函数。在
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
确保不执行该文件,因为如果您不能信任其内容(如果您甚至不知道该文件是否包含有效语法,我怀疑即使您生成了这些内容,您也不能真正信任这些内容),那么您可能最终执行恶意代码。在
不需要使用^{} 。它的预期用途是从给定的源文件中编写字节码文件。事实上,如果您没有在目录中写入的权限,它将失败,因此您可能会得到一些误报。在
为了只解析并验证语法,可以使用^{} 模块来^{} 文件的内容,或者直接调用^{} 内置函数。在
确保不执行该文件,因为如果您不能信任其内容(如果您甚至不知道该文件是否包含有效语法,我怀疑即使您生成了这些内容,您也不能真正信任这些内容),那么您可能最终执行恶意代码。在
相关问题 更多 >
编程相关推荐