2013-11-14 30 views
0

我想導入python文件和函數動態。該modulenames應傳遞給一個函數,像這樣:python,導入一個動態名稱的文件

def scrape(url, foo): 
    modulename = url['modulename'] 
    import modulename 
    modulename.modulename(url, foo) 

這示數出有:

ImportError: No module named modulename 

那麼我們怎樣才能讓Python使用「模塊名」作爲一個變量?

謝謝!

回答

5

您可以使用importlib.import_module()

def scrape(url, foo): 
    import importlib 
    modulename = importlib.import_module(url["modulename"]) 
    modulename.modulename(url, foo) 
+0

很好,現在...它沒有翻譯動態函數名稱。我該如何解決這個問題? – Cmag

1

您還可以使用

module = __import__('module_name') 

例子:

module = __import__('math') 
print module.sqrt(4) 
>> 2 

或者,如果你想使用動態方法的名稱,以及

module = __import__('math') 
method = getattr(module, 'sqrt') 
method(4) 
>> 2 
+0

我將如何調用在該模塊中定義的功能? – Cmag

+1

用於math.sqrt:'module = __import __('math'); module.sqrt(2)' –

+0

所以函數名不能動態傳遞?我想我可以訴諸主要() – Cmag

相關問題