如何在python中将变量的值传递给import语句

Shi*_*ade 4 python string import syntax-error variable-assignment

我是python的新手.我正在使用python <2.7.我必须在开始时导入一个名字我不知道的文件.实际上我必须通过命令提示符传递文件名,现在我已经读取了名称并存储在变量中,但我不知道如何将它传递给import语句.我正在尝试代码

str = sys.argv[lastIndex]
from "%s" import *,str
Run Code Online (Sandbox Code Playgroud)

但它给出了错误

File "IngestDataToMongo.py", line 86
from "%s" import *,str
        ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

那怎么做呢.也可以使用python <2.7,因为由于某些原因我无法更改Python的版本或安装运行此代码的任何内容.

Tad*_*eck 5

您可以使用__import__()函数来导入模块.它接受变量作为参数.

但首先,确保你真的需要它 - 有90%的时间人们并不真正需要这个功能.


ale*_*sel 5

您应该使用importlib模块

import importlib

mdl = 'urllib'
your_module = importlib.import_module(mdl)
your_module.quote
>>> <function urllib.quote>
Run Code Online (Sandbox Code Playgroud)

编辑

感谢Tadeck - 这确实适用于 python 2.7 和 3.1+

  • 一个重要的注意事项:`importlib` 在 Python &lt;2.7 或 3.0 中不可用,即使在 2.7 中,它也是“_Python 3.1 中功能更全的同名包中可用的一个小子集_”([来源](http://docs.python.org/2.7/library/importlib.html))。 (2认同)