繁体   English   中英

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

[英]how to pass value of a variable to import statement in python

我是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的版本或安装运行此代码的任何内容。

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

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

您应该使用importlib模块

import importlib

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

编辑

感谢Tadeck - 这适用于python 2.7和3.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 (或eval )的使用具有潜在的危险性

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM