我想写一个函数,它接受一个变量名、一个文件名和第三个字符串,并尝试从文件中导入给定的变量,如果做不到,它将变量设置为第三弦。我来给你展示。这是在我的 config.py 中:
variable = 'value'
这是我的函数(不起作用):
#!/usr/bin/python
def importvar (var, fname, notfound) :
try:
from fname import var
except:
var = notfound
return var;
value = importvar ('variable', 'config', 'value not found')
print value #prints 'value not found'
这就是我要实现的目标:
from config import variable
print variable #prints 'value'
这个问题类似于“How to use a variable name as a variable in python?”,但我找到的答案似乎对我不起作用。我不一定需要将它们存储在变量中,但我想不出更好的办法。我知道这是“你不应该在 python 中做什么”的完美示例,但我仍然需要它。感谢您的帮助!
请您参考如下方法:
您要做的是从描述模块路径的字符串开始动态导入模块。您可以使用 import_module 来完成此操作来自 importlib 包。
import importlib
def importvar (var, fname, notfound) :
try:
return getattr(importlib.import_module(fname), var)
except:
return notfound
