我正在制作一个程序来检测 python 文件并读取它们的类和函数以便调用。如何在不导入的情况下列出另一个 python 文件中的函数?我该如何称呼他们?
程序结构:
- Index.py(主py文件)
- /内容
- /模块
- 模块.py
- ChickenModule.py(我想从中获取功能的模块)
- /模块
Modules.py 列出/Modules 中的所有 python 文件并将它们存储在列表中。 Index.py 调用 Modules.py 中的函数(只是为了让事情不那么困惑)
ChickenModule.py 有一个名为 ChickenStuff 的类,它在调用 self.(something)
时打印“I'm a chicken”。
该程序的目标是让用户能够将 .py 文件放入模块中,并在运行 index.py 时列出所述 .py 文件的函数和类。
最佳答案
有一个名为 importlib
的内置库可能就是您所需要的。我假设您想要列出类(class)。为此,您需要检查
。
import os
import os.path as path
import importlib
import inspect
# get a list of all files in Content/Modules
filelist = os.listdir("Content/Modules")
# import every file ending in .py
for fname in filelist:
if path.splitext(fname)[1] == 'py':
my_module = importlib.import_module(path.splitext(fname)[0]) # load the module
for _, obj in inspect.getmembers(my_module): # iterate through members
if isinstance(obj, type): # check if members is a class
print(obj)
关于python - 如何在不导入的情况下从python文件中获取函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57120512/