Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从名称在变量中的模块导入字典_Python - Fatal编程技术网

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

Python 从名称在变量中的模块导入字典,python,Python,我编写了一个程序,将文件夹中的所有文件编码为字符串,并将其作为字典写入pyfile 要创建的py文件的名称随路径一起给出,字典是通过在其名称中添加“=data”来创建的。例如: pyfilename = "images.py" 然后,带有图像的字典将作为imagesdata写入该文件 现在我需要解码以前以这种方式编码的任何py文件 我在变量中只给出py文件的名称,程序从中获取所有其他名称,并从具有给定名称的正确模块中导入正确的字典。下面给出了示例代码 name2decode = images.

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

要创建的py文件的名称随路径一起给出,字典是通过在其名称中添加“=data”来创建的。例如:

pyfilename = "images.py"
然后,带有图像的字典将作为
imagesdata
写入该文件

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

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

name2decode = images.py
dictname = name2decode + "data"
这个程序应该可以

from name2decode import dictname
其中
name2decode
dictnames
是变量。我尝试使用
\uuuuu导入(“name2decode.dictname”)
语法,但由于某些原因,这不起作用。也许我把语法搞错了


如何做到这一点?

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

import importlib
import os.path

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

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

name2decode=images.py
-这不应该是
name2decode=“images.py”
?“不起作用”是什么意思?如果出现错误,请提供完整的回溯。您能解释一下行name2decode=os.path.splitext(name2decode)[0]吗?splittext和[0]有什么作用?@wookie:将文件名拆分为基本元组和扩展元组,
[0]
只选择基本部分。它为您提供了
images.py
中的
images
部分。谢谢。如果我知道我在这里查找的文件的文件扩展名,例如“images.py”,我可以使用name2decode=filename[:-3],它将删除“.py”部分并给出“images”部分吗?@wookie:如果你确定它将始终是这3个字符,当然可以。