如何获取Python模块中所有未导入名称的列表?

电子足够

给定一个包含以下内容的模块:

import stuff
from foo import Foo
from bar import *

CST = True

def func(): pass

如何定义函数get_defined_objects以便执行以下操作:

print(get_defined_objects('path.to.module'))
{'CST': True, 'func', <function path.to.module.func>}

现在,我能想象的唯一解决方案是读取原始模块文件,使用提取定义的名称,re.search(r'^(?:def|class )?(\w+)(?:\s*=)?'然后导入模块,并找到的交集__dict__

有清洁剂吗?

瓦迪姆·兰达(Vadim Landa)

您可以从这里开始使用ast请注意,尽管该代码应正确处理例如多个分配,但它并未涵盖所有可能的情况。例如ast,如果您想访问已编译的代码,请考虑更仔细地研究的数据结构和API。

import ast

with open('module.py') as f:
    data = f.read()
    tree = ast.parse(data)
    elements = [el for el in tree.body if type(el) in (ast.Assign, ast.FunctionDef, ast.ClassDef)]

result = {}

for el in elements:
    if type(el) == ast.Assign:
        for t in el.targets:
            if type(el.value) == ast.Call:
                result[t.id] = el.value.func.id + '()'
            else:
                for attr in ['id', 'i', 's']:
                    try:
                        result[t.id] = getattr(el.value, attr)
                        break
                    except Exception as e:
                        pass
    elif type(el) == ast.FunctionDef:
        result[el.name] = '<function %s>' % el.name
    else:
        result[el.name] = '<class %s>' % el.name

print result
#

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何获取python-chess模块中所有合法移动的列表?

来自分类Dev

如何获取Python中所有内置函数的列表?

来自分类Dev

获取GAE Python中所有NDB模型名称(类名称)的列表

来自分类Dev

获取IEx中所有elixir模块的列表

来自分类Dev

python-获取当前模块中所有功能的列表。检查当前模块不起作用?

来自分类Dev

如何使用python获取具有默认名称空间的xml文件中所有元素的xpath?

来自分类Dev

如何使用python获取具有默认名称空间的xml文件中所有元素的xpath?

来自分类Dev

如何获取数据集中所有未选择的行

来自分类Dev

获取所有已声明的模块导入的列表(SystemJS)

来自分类Dev

我如何获取带有远程Websphere应用程序服务器中所有队列名称的列表?

来自分类Dev

如何获取RethinkDB表中所有文档中所有键的列表?

来自分类Dev

如何获取DocumentDB文档中所有集合的列表?

来自分类Dev

如何获取Laravel中所有型号的列表?

来自分类Dev

如何获取Yocto中所有可用目标的列表?

来自分类Dev

如何获取Powershell中所有Azure VM的列表

来自分类Dev

如何获取C中所有驱动器的列表

来自分类Dev

如何获取matplotlib中所有标记的列表?

来自分类Dev

如何获取Qt C ++中所有可用主题的列表?

来自分类Dev

如何获取Linux中所有打开的命名管道的列表?

来自分类Dev

如何获取Play商店中所有热门应用的列表

来自分类Dev

如何获取Dart中所有已加载库的列表?

来自分类Dev

如何获取Zathura中所有书签的列表

来自分类Dev

如何获取Xorg中所有窗口的列表?

来自分类Dev

在Python中,如何获取Mac OS X中所有分区的列表?

来自分类Dev

获取Netsuite中所有角色的列表

来自分类Dev

获取yii中所有州的列表

来自分类Dev

获取Qt中所有QPushButton的列表

来自分类Dev

获取正在导入模块的 python 脚本的名称

来自分类Dev

如何在Haxe中检索模块中所有类的列表?(又名:助手类)

Related 相关文章

  1. 1

    如何获取python-chess模块中所有合法移动的列表?

  2. 2

    如何获取Python中所有内置函数的列表?

  3. 3

    获取GAE Python中所有NDB模型名称(类名称)的列表

  4. 4

    获取IEx中所有elixir模块的列表

  5. 5

    python-获取当前模块中所有功能的列表。检查当前模块不起作用?

  6. 6

    如何使用python获取具有默认名称空间的xml文件中所有元素的xpath?

  7. 7

    如何使用python获取具有默认名称空间的xml文件中所有元素的xpath?

  8. 8

    如何获取数据集中所有未选择的行

  9. 9

    获取所有已声明的模块导入的列表(SystemJS)

  10. 10

    我如何获取带有远程Websphere应用程序服务器中所有队列名称的列表?

  11. 11

    如何获取RethinkDB表中所有文档中所有键的列表?

  12. 12

    如何获取DocumentDB文档中所有集合的列表?

  13. 13

    如何获取Laravel中所有型号的列表?

  14. 14

    如何获取Yocto中所有可用目标的列表?

  15. 15

    如何获取Powershell中所有Azure VM的列表

  16. 16

    如何获取C中所有驱动器的列表

  17. 17

    如何获取matplotlib中所有标记的列表?

  18. 18

    如何获取Qt C ++中所有可用主题的列表?

  19. 19

    如何获取Linux中所有打开的命名管道的列表?

  20. 20

    如何获取Play商店中所有热门应用的列表

  21. 21

    如何获取Dart中所有已加载库的列表?

  22. 22

    如何获取Zathura中所有书签的列表

  23. 23

    如何获取Xorg中所有窗口的列表?

  24. 24

    在Python中,如何获取Mac OS X中所有分区的列表?

  25. 25

    获取Netsuite中所有角色的列表

  26. 26

    获取yii中所有州的列表

  27. 27

    获取Qt中所有QPushButton的列表

  28. 28

    获取正在导入模块的 python 脚本的名称

  29. 29

    如何在Haxe中检索模块中所有类的列表?(又名:助手类)

热门标签

归档