4

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

str = sys.argv[lastIndex]
from "%s" import *,str

但它给出了错误

File "IngestDataToMongo.py", line 86
from "%s" import *,str
        ^
SyntaxError: invalid syntax

那么该怎么做。python <2.7也可以,因为由于某些原因,我无法更改Python的版本或安装任何运行此代码的东西。

4

3 回答 3

5

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

但首先,确保你真的需要那个——90% 的时间人们并不真正需要那个功能。

于 2012-11-30T09:16:58.120 回答
4

您应该使用importlib模块

import importlib

mdl = 'urllib'
your_module = importlib.import_module(mdl)
your_module.quote
>>> <function urllib.quote>

编辑

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

于 2012-11-30T09:18:59.667 回答
1

如果您不想导入importlib模块,请执行以下操作:

import sys
s = sys.argv[lastIndex]
def is_save(s):
    #test if s is a valid argument
    return True or False

if is_save(s):
    exec('from %s import *'%s)

注意:is_save需要该函数以避免滥用脚本,因为exec(or eval)的使用具有潜在危险

于 2012-11-30T09:21:20.763 回答