如果目录包含多个.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/