fia*_*jaf 6 python parsing abstract-syntax-tree
是否可以使用ast模块以编程方式解析和修改不受信任的外部Python代码?
我只会解析源代码,从源代码中获取一些信息(文档字符串,函数定义,也许,我不知道)并将其留在那里,而不是编译或运行它。
如果您正在使用该ast.parse功能,那么它应该是安全的。正如文档所说,这个函数将
将源解析为 AST 节点。相当于编译(源,文件名,模式,ast.PyCF_ONLY_AST)
即使文件包含无效的 Python 代码,它也会简单地解析该文件。它不做任何形式的评估。
如果您的目的是评估表达式,那么您可以使用ast.literal_eval,这比内置eval语句更安全