如何在不导入的情况下从python文件获取函数

时间:2019-07-19 23:13:04

标签: python function class

我正在编写一个检测python文件并读取其类和函数以便随后调用的程序。如何在不导入的情况下从另一个python文件列出功能?以及如何称呼他们?

程序的结构:

  • Index.py(主要py文件)
  • /内容
    • /模块
      • Modules.py
      • ChickenModule.py(我想从中获取功能的模块)

Modules.py列出/ Modules中的所有python文件,并将它们存储在列表中。 Index.py调用Modules.py中的函数(只是为了使事情少一点混乱)

ChickenModule.py具有一个名为ChickenStuff的类,该类在每次被self.(something)调用时都会显示“我是一只鸡”。

该程序的目标是使用户能够在模块中放置.py文件,并且在运行index.py时,将列出该.py文件的功能和类。

1 个答案:

答案 0 :(得分:0)

您可能需要一个名为importlib的内置库。我假设您要列出课程。为此,您需要inspect

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)