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