2017-02-20 24 views
0

Я пытаюсь принять вход пользователя и посмотреть, есть ли модуль с именем, который они вводят. Если есть, то я хочу, чтобы этот модуль был импортирован, и вызвать функцию внутри него с тем же именем. Я знаю, что есть более простые способы сделать это, но я хотел попытаться сделать его суперкомпактным.Как импортировать модуль с именем [userinput] в Python 3.6?

Это была моя идея:

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

Если он не может найти модуль с именем, было бы просто отключают исключение и продолжить работу.

Моя проблема заключается в возможности импорта модуля из строки, указанной на входе.

ответ

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

Частичные работы Exec(), но я не уверен, что вы хотите сделать с _ (UserInput). (UserInput)

+0

Если вам все равно, будет ли пользователь вводить 'os; os.remove ('~') #', это сработает. –

+0

Использование 'exec (" {}. _ {} ".format (userinput, userinput))', вероятно, будет работать, просто не распознавая модуль, который я хочу импортировать. –

+0

Что вы подразумеваете под «распознаванием модуля»? – Phonzi

0

Используйте функцию __import__.

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