我有一个像这样定义的变量:
file = "filename_" + getpass.getuser()
我想导入这个文件
import file
这可能吗 ?
我有一个像这样定义的变量:
file = "filename_" + getpass.getuser()
我想导入这个文件
import file
这可能吗 ?
有多种方法可以做到这一点,有些方法比其他方法更 Pythonic。(应该指出,模块的动态导入有点不常见,通常有更好的方法。)
使用exec
:
module_name = "filename_{0}".format(getpass.getuser())
exec_string = "import {0}".format(module_name)
exec exec_string
这会将模块带入命名空间,但有点容易受到任意代码执行的影响,您需要进行 eval 调用才能实际访问该模块。
更好的方法是使用__import__
或importlib
模块,两者在 Python 2.X 中可以互换。
module = __import__(module_name)
或者
import importlib
module = importlib.import_module(module_name)
看看__import__
内置函数。