如果文件名在变量中,是否可以导入文件?

时间:2013-10-09 15:56:07

标签: python python-import

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

file = "filename_" + getpass.getuser()

我想导入此文件

import file

这可能吗?

2 个答案:

答案 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__内置函数。

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