我有一个像这样定义的变量:
file = "filename_" + getpass.getuser()
我想导入此文件
import file
这可能吗?
答案 0 :(得分:3)
有多种方法可以做到这一点,有些方法比其他方式更像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)
答案 1 :(得分:0)
查看__import__
内置函数。