2017-06-19 75 views
-1

我想導入一個名爲「config」的模塊,我想導入config.times。但在我的代碼中,times是列表name_list中的元素,意思是:如何在python中導入模塊的變量?

name_list = ['times','date','hours']

當我想使用config.times時,我嘗試config.name_list[0]。當然,有一個錯誤" 'module' object has no attribute 'name_list'"。那我該如何解決它?謝謝。
---更多細節:
我的代碼是:config.py,main.py。在config.py,倍= ['00:00:00' , '12:00:00'] ,並在main.py中,name_list = ['times','date','hours'],我想要在main.py中執行now = config.times

+0

您給出的所有解釋都無法替換髮布您的配置模塊代碼......我敢打賭,這是因爲您如何定義配置代碼......但是如何知道您是否不發佈它... – Eliethesaiyan

+0

我的代碼是:'config.py,main.py'。'config.py',times = ['00:00:00','12:00:00']和'main.py'中, name_list = ['times','date','hours'],我想要main.py中的exec'now = config.times'。 –

+0

你可以將它們添加到這個問題嗎?主要和配置文件代碼?我認爲它是在stackoverflow上提問的自然方式 – Eliethesaiyan

回答

0

使用嘗試在main.py如下:

from config import times 

name_list = ['config.times','date','hours'] 

從這裏修改是在更多的澄清 ,然後使用:

eval(name_list[0]) # for evaluating config.times 

我希望這是更清晰

請刪除downvote。

+0

這就是OP所嘗試的。在評論中看到他的解釋。它會使它更清晰。 – gonczor

+0

是你@gonczor在說什麼 我的代碼是:config.py,main.py。在config.py中,times = ['00:00:00','12:00:00'],並在main中。py,name_list = ['times','date','hours'],我想在main.py中執行exec = config.times。 - 彭和2小時 然後,我寫的和他的代碼有所不同。 請重新檢查。 – Gurdyal

+0

是的,確切地說。我認爲這也是一些不同的問題。 – gonczor

2

如果我理解正確,您想從您導入的模塊訪問變量times,但您希望該名稱(times)來自另一個變量,而不是硬編碼。

這可以通過幾種方式來完成。最簡單的可能是使用getattr函數來獲取從模塊對象屬性:

import config 

name = "times" # or wherever, e.g. name_list[0] 

results = getattr(config, name) # will get a reference to config.times 

我不知道這樣做是真的,雖然一個偉大的想法。一般來說,變量名稱(例如config模塊中的times)應該供程序員解釋。他們不應該是數據。如果您想按名稱查找數據,通常應該使用字典來存儲鍵和值,而不是使用模塊的名稱空間。

因此,例如,可以讓你的config模塊名爲data字典,你可以在你的當前times值移到data['times']。然後按名稱查找值只是字典查找:config.data[name]

+0

工作很好,謝謝。 –