2014-01-27 34 views
0

再次是python的新手。我有這個任務,涉及通過輸入一個俱樂部的名稱或詢問一個關鍵字如阿森納比分等來搜索某個俱樂部的細節。我已經爲幾個球隊製作了幾個模塊模塊,如下所示:如何將許多模塊導入到main並執行

最接近我來主要是:

def main(): 
    import team que1 

if __name__ =='__main__':main() 

我也有其他球隊,如NBA,曲棍球,橄欖球等,每次我單獨運行的模塊,它的工作原理其他模塊,但我需要一種方法來導入到主允許用戶輸入任何關鍵詞,如「芝加哥公牛隊球員」和模塊運行或「阿森納比分」,並從主要模塊運行。這些模塊包含相當長的細節,這就是爲什麼我將長代碼分離到這些模塊中的原因。我也把它們放進packages.Please幫助

+0

那麼,你已經在隊名和模塊名之間的映射? –

+0

對不起@yopy我不明白這是什麼。對於這個 – wakamdr

+1

非常新穎,您可以先縮進您的代碼片段。 –

回答

0

這裏是小片段來讓你明白:

  1. 在Python中你可以通過模塊名作爲字符串導入模塊。 __import__

  2. 具有兩個腳本在我的代碼片段:

2.1主要腳本名稱是menu.py.

2.2模塊名稱是阿森納將加載根據您輸入的字符串:

可以延長主腳本和模塊,你喜歡的方式。這只是爲了理解。

main.py

#!/usr/bin/python 

def load_module(name): 
    return __import__(name) 

def what_score(module_name, sc): 
    return getattr(module_name, 'score')(sc) 

if __name__ == '__main__': 
    print "Input team name: ", 
    team_name = raw_input().strip() 
    module_name = load_module(team_name) 
    print what_score(module_name, 5) 

arsenal.py

def score(n): 
    return 'Score from [%s] is %d' % (__name__, n) 

輸出:

:tmp:> python menu.py 
Input team name: arsenal 
Score from [arsenal] is 5 
:tmp:> 
+0

嗨,感謝您的寶貴意見。大家肯定讚賞 – wakamdr

+0

當然,我們可以通過維護一個字典來過濾來自用戶的錯誤輸入來擴展團隊。 –

+0

那會像{阿森納,阿斯頓維拉,Cardif'....}? – wakamdr