从名称在变量中的模块导入字典

时间:2014-09-25 09:36:12

标签: python

我编写了一个程序,将文件夹中的所有文件编码为字符串,并将其作为字典写入pyfile。

要创建的py文件的名称与路径一起给出,字典是通过添加"来创建的。 =数据"它的名字。例如:

pyfilename = "images.py"

然后带有图像的字典将作为imagesdata写入此文件。

现在我需要解码之前以这种方式编码的任何py文件。

我只在变量中给出py文件的名称,程序从中获取所有其他名称,并从具有给定名称的正确模块中导入正确的字典。示例代码如下。

name2decode = images.py
dictname = name2decode + "data"

程序应该

from name2decode import dictname

其中name2decodedictnames是变量。我尝试使用__import__("name2decode.dictname")语法但由于某种原因这不起作用。也许我的语法错了。

如何做到这一点?

1 个答案:

答案 0 :(得分:1)

导入模块名称,然后使用getattr()从中获取字典对象:

import importlib
import os.path

name2decode = os.path.splitext(name2decode)[0]
module = importlib.import_module(name2decode)
dictionary = getattr(module, dictname)

请注意,您需要在导入时删除.py扩展名!