python - 如何在交互式 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 节点。你能帮帮我在这里做错了吗?
谢谢!
解决方案
您应该传递ast.parse
要解析的实际源代码,而不是空字符串:
with open(filename) as f:
tree = ast.parse(f.read(), filename=filename)
推荐阅读
- javascript - 动态更新网页上的值
- c# - 如何在 C# 中将 Sqlite 文本读取为日期时间和布尔值?
- kubernetes - GKE Cluster Autoscaler 按时基预创建节点
- gradle - 如何在不修改 settings.gradle 的情况下添加 gradle 项目依赖项
- javascript - 如何从对象键中删除值
- python - python中的正则表达式混淆
- javascript - 方法未添加到原型
- json - SwiftyJSON,不能把json变成double
- php - PHP-explode 或 preg_split 排列数组
- git - 在远程部署 Laravel 的最佳实践