0

我有一个像这样定义的变量:

file = "filename_" + getpass.getuser()

我想导入这个文件

import file

这可能吗 ?

4

2 回答 2

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)
于 2013-10-09T16:10:17.597 回答
0

看看__import__内置函数。

您也可能对impimportlib模块感兴趣。

于 2013-10-09T16:00:57.733 回答