从python上的文件夹导入所有文件

Enu*_*uff 0 python python-import

我有一个包含一些python文件的文件夹:

modules
|--> __init__.py
|--> car.py
|--> plane.py
|--> ship.py
|--> etc...
Run Code Online (Sandbox Code Playgroud)

每个文件都包含以下内容:

car.py

NAME = "car_name"
def mainloop(*args):
    ...
    return whatever
Run Code Online (Sandbox Code Playgroud)

plane.py

NAME = "some_different_name"
def mainloop(*args):
    ...
    return whatever
Run Code Online (Sandbox Code Playgroud)

等等...

我想从我的父目录动态导入它们作为这样的字典:

from modules import modules
print(modules)
{
    "car_name": <function mainloop at ...>,    
    "some_different_name": <function mainloop at ...>,
    etc..
}
Run Code Online (Sandbox Code Playgroud)

我不知道文件夹或文件名上会有多少文件.我该怎么做?

hil*_*lem 5

modules.py:

import os, importlib
fs = [f for f in os.listdir('.') if f.endswith('.py')]
modules = {m.NAME: m.mainloop for m in map(importlib.import_module, fs)
               if hasattr(m, 'mainloop')}
Run Code Online (Sandbox Code Playgroud)

  • 您能解释一下代码吗,特别是最后一行:( (2认同)