gpt4 book ai didi

python - 使用 ast 获取模块名称

转载 作者:行者123 更新时间:2023-11-28 22:05:39 26 4
gpt4 key购买 nike

如何使用 ast 获取 python 模块名称?我尝试了以下方法来获取模块节点,但看起来它没有名称信息:

class v(ast.NodeVisitor):
def visit_Module(self, node):
print "Module : %s" % node

v().visit_Module(ast.parse(f.read(), filename))

我基本上需要实际的模块名称(如果它在包内,那么完整的名称,如 a.b.module)。

最佳答案

AFAIU,ast 中不存在此信息。更正式地说,Python 中 Module 的抽象语法是:

mod = Module(stmt* body)
| Interactive(stmt* body)
| Expression(expr body)

-- not really an actual node but useful in Jython's typesystem.
| Suite(stmt* body)

正如您所见,Module 只有一个主体,它是一个语句节点列表。没有名字。

请注意,您将 f.read() 传递给访问者。这会返回文件的内容,而无需真正知道或关心该文件的命名方式 - 您可以从哪里获取模块名称?

通过执行 Python 代码,您可以在 Python 代码内部使用 __name____package__

关于python - 使用 ast 获取模块名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5002971/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com