栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何在模块中以文本方式查找导入的名称

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在模块中以文本方式查找导入的名称

import inspectimport importlibimport astclass imports(ast.NodeVisitor):    def visit_import(self, node):        print("In import")        for imp in node.names: if imp.asname is not None:     print("module name = {}, alias = {}".format(imp.name, imp.asname)) else:     print("module name = {}".format(imp.name))        print()    def visit_importFrom(self, node):        print("In importFrom")        for imp in node.names: if imp.asname is not None:     print("module = {}nname = {}nalias = {}nlevel = {}n".format(node.module, imp.name, imp.asname, node.level)) else:     print("module = {}nname = {}nlevel = {}n".format(node.module, imp.name, node.level))        print()mod = "temp_test"mod = importlib.import_module(mod)p = ast.parse(inspect.getsource(mod))imports().visit(p)

输入:

from bisect import bisect_left as bsimport datetimeimport timeimport numpy as npdef foo():    from re import findallclass Foo():    def test(self):        from re import compile as cp, finditer as ft

输出:

In importFrommodule = bisectname = bisect_leftalias = bslevel = 0In importmodule name = datetimeIn importmodule name = timeIn importmodule name = numpy, alias = npIn importFrommodule = rename = findalllevel = 0In importFrommodule = rename = compilealias = cplevel = 0module = rename = finditeralias = ftlevel = 0

类import(名称)

导入声明。名称是别名节点的列表。

importFrom类(模块,名称,级别)

从x导入y表示。module是“
from”名称的原始字符串,没有任何前导点,对于诸如from的语句则为None。导入foo。level是一个保持相对导入级别的整数(0表示绝对导入)。

该greentreesnakes至少文档,我有什么样的所有节点做一个更好的解释,以及如何使用AST模块比实际AST文档本身。

您还可以使用直接传递模块或打开py文件并将内容传递给ast.parse:

with open("temp_test.py") as f:    p = ast.parse(f.read(), filename="<ast>", mode="exec")imports().visit(p)

并传递模块:

import  temp_testp = ast.parse(inspect.getsource(temp_test))imports().visit(p)


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/668548.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号