从 python 上的文件夹导入所有文件
Import all files from a folder on python
我有一个包含几个 python 个文件的文件夹:
modules
|--> __init__.py
|--> car.py
|--> plane.py
|--> ship.py
|--> etc...
每个文件都包含:
car.py
NAME = "car_name"
def mainloop(*args):
...
return whatever
plane.py
NAME = "some_different_name"
def mainloop(*args):
...
return whatever
等等...
我想像这样从我的父目录动态导入它们作为字典:
from modules import modules
print(modules)
{
"car_name": <function mainloop at ...>,
"some_different_name": <function mainloop at ...>,
etc..
}
我不知道文件夹或文件名中会有多少文件。
我该怎么做?
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')}
我有一个包含几个 python 个文件的文件夹:
modules
|--> __init__.py
|--> car.py
|--> plane.py
|--> ship.py
|--> etc...
每个文件都包含:
car.py
NAME = "car_name"
def mainloop(*args):
...
return whatever
plane.py
NAME = "some_different_name"
def mainloop(*args):
...
return whatever
等等...
我想像这样从我的父目录动态导入它们作为字典:
from modules import modules
print(modules)
{
"car_name": <function mainloop at ...>,
"some_different_name": <function mainloop at ...>,
etc..
}
我不知道文件夹或文件名中会有多少文件。 我该怎么做?
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')}