2017-07-19 138 views
0

所有的文件我有幾個蟒蛇文件的文件夾:導入從文件夾蟒蛇

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.. 
} 

我不知道有多少文件將文件夾或文件名上。 我該怎麼辦?

回答

4

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')} 
+1

我覺得他的文件結構意味着你應該有'os.listdir(」 ./模塊)''中fs',因爲他是一個運行在父目錄 –

+0

沒錯腳本,它改變了'os.listdir('./ modules')'謝謝你們 – Enuff