如何在Python 3.6中导入名为[userinput]的模块?

如何在Python 3.6中导入名为[userinput]的模块?,python,python-3.x,import,try-catch,Python,Python 3.x,Import,Try Catch,我试图获取用户的输入,看看是否有一个名为which的模块。如果有,我希望导入该模块,并在其中调用同名函数。我知道有更简单的方法可以做到这一点,但我想尝试使它超级紧凑 这是我的想法: userinput = str.lower(input(prompt)) try: import (userinput) as _(userinput) _(userinput).(userinput) except: print("Module not found") 如果找不到具有给定名

我试图获取用户的输入,看看是否有一个名为which的模块。如果有,我希望导入该模块,并在其中调用同名函数。我知道有更简单的方法可以做到这一点,但我想尝试使它超级紧凑

这是我的想法:

userinput = str.lower(input(prompt))
try:
    import (userinput) as _(userinput)
    _(userinput).(userinput)
except:
    print("Module not found")
如果找不到具有给定名称的模块,它只需触发异常并继续

我的问题是能否从输入中给定的字符串导入模块

userinput = str.lower(input(prompt))
try:
    exec("import %s as _(userinput)"%(userinput))
    #_(userinput).(userinput)  ???????
except:
    print("Module not found")

exec()部分可以工作,但我不确定您想用uu(userinput)做什么。(userinput)

使用
\uu导入u
函数

userinput = input("Enter name of module to import: ")
module = __import__(userinput)

如果你不在乎用户是否输入
os;os.remove(“~”)#
这会起作用。使用
exec(“{}.{}”.format(userinput,userinput))
可能会起作用,只是无法识别我想要导入的模块。你说的“识别模块”是什么意思?如果我运行它并输入模块的名称,它会触发异常,而不是导入并运行模块。好的,我解决了这个问题,谢谢。