2017-06-19 54 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

工作很好,谢谢。 –