如果目录包含多个.py文件
例如,a.py,b.py,c.py
我如何获取该目录中包含的所有模块名称及其类名称,以及最终所有相应类的方法名称

最佳答案

要过滤目录中的文件,可以使用('。'指向当前目录):

from os import listdir,chdir

default_path = r'c:\dev\python'
modules = [ fl for fl in listdir(default_path) if fl.endswith('.py') ]


要获得我知道的类和方法,尽管不导入模块也无法使用它,但可以使用inspect:

例如

from inspect import getmembers, isfunction, ismethod, isclass
your_module = __import__(modules[0].split('.')[0])

class_funcs = {}
funcs = [ obj for obj in getmembers(your_module) if isfunction(obj[1]) ]
classes = [ obj for obj in getmembers(your_module) if isclass(obj[1]) ]

for cls in classes:
    class_funcs[cls[0]] = [ obj for obj in getmembers(cls[1]) if ismethod(obj[1]) ]

print funcs

[('function1', <function your_module.function1>),
('function2', <function your_module.function2>)]

print class_funcs

{'ClassName': [('__init__', <unbound method ClassName.__init__>),
('Method_name', <unbound method ClassName.Method_name>)]}


这将为您提供模块中的所有函数,类,类方法。

如果您不想导入模块,则我不熟悉获取方法的方法(除了读取文件和使用正则表达式等)。

关于python - 从python目录中获取所有模块名称,类名称和方法名称,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32197735/

10-17 01:25