首页 > 解决方案 > 如何在交互式 shell 中使用 ast.parse() 来解析文件

问题描述

所以我有这个文件:

>cat ~/tmp/junk.py
def foo(a, b, c = 100):
    return a + b + c

z = foo(10, 20)
print(z)

然后在 Python3.7 交互式 shell 中:

>>> import ast
>>> root=ast.parse("", "~/tmp/junk.py")
>>> ast.dump(root)
'Module(body=[])'
>>> for node in ast.walk(root):
...   ast.dump(node)
... 
'Module(body=[])'

我的目标是检查函数参数 a、b 和 c 的 AST 节点。你能帮帮我在这里做错了吗?

谢谢!

标签: pythonpython-3.x

解决方案


您应该传递ast.parse要解析的实际源代码,而不是空字符串:

with open(filename) as f:
    tree = ast.parse(f.read(), filename=filename)

推荐阅读