获取AST节点的“ ctx”对象的值

时间:2019-06-11 19:42:39

标签: python-3.x abstract-syntax-tree

我有一个配置文件config.py,并且我尝试不使用importlib.import_module()(或imp.load_source())来读取属性的值。

所以,我这样做了:

# trying to just get the attribute 'comment' from the file

import ast
fd = open('config.py')
root = ast.parse(fd.read())
names = list(node for node in ast.walk(root) if isinstance(node, ast.Name) and node.id == 'comment')
print(names)
# [<_ast.Name object at 0x7fcb999048d0>]
print(names[0])
# <_ast.Name object at 0x7fcb999048d0>
print(names[0].id)
# 'comment'
print(names[0].ctx)
# <_ast.Store object at 0x7fcb9b9acbd0>
print(names[0].lineno)
# 12
print(names[0].ctx)
# <_ast.Store object at 0x7f19db3f1c10>
dir(names[0].ctx)
# ['__class__', '__delattr__', '__dict__', '__doc__', '__format__', 
# '__getattribute__', '__hash__', '__init__', '__module__', '__new__', 
# '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', 
# '__str__', '__subclasshook__', '__weakref__', '_attributes', '_fields']

文件(config.py)在第12行上具有以下内容:

comment = "qos sample run"

我正在尝试弄清楚如何在代码中获得此值("qos sample run")。我可以读取文件并获得第12行,但我猜测该值存储在ctx对象中的某个位置,但我无法弄清楚位置。 任何帮助表示赞赏。谢谢!

0 个答案:

没有答案