Форум сайта python.su
0
У меня есть command = raw_input (“> ”) в цикле.
Дальше идут различные условия, типа
if command == “rename”:
…
И т.д.
Как сделать так, чтобы при том же “rename”, можно было кроме самой команды ввести ещё какой - то
текст, который потом можно было бы достать из command?
Офлайн
3
Разделяйте команду и текст например пробелами, и:
command=raw_input('> ').split()
if command[0]=='rename':
opt=command[1]Офлайн
0
Пробелами и будет, но что, если у меня будет ещё команда, без дополнительного текста?
Офлайн
0
command=raw_input('> ').split()
if len(command) > 1:
if command[0]=='rename':
opt=command[1]
else:
выполнить безусловную командуОтредактировано (Май 30, 2010 18:15:56)
Офлайн
32
Eliontможно попробовать методы exec и eval, но их лучше использовать в крайних мерах
И кстати, подскажите пожалуйста - можно как-нибудь из инпута (ну, не совсем) взять строку и использовать её как имя функции, причём функции надо передавать параметры.
Офлайн
0
AvatarmovВводить команды в таком виде:
Пробелами и будет, но что, если у меня будет ещё команда, без дополнительного текста?
> --command1 more than one word --command2
Офлайн
0
o7412369815963Спасибо
exec и eval
s = 'strength = random.randint(20,40)'
exec s
print strength
>>> 25
Отредактировано (Май 31, 2010 13:17:46)
Офлайн
3
Eliontага…. exec('import sys;sys.exit(0)') самое безобидное что можно сделать…. Не делайте так никогда!!!
Кстати, Avatarmov, пожалуй исползование exec может избавить тебя от необходимости прописывать некоторые процедуры самостоятельно.
Офлайн
26
Вылысыпыдысты, блин!.. http://docs.python.org/library/cmd.html
Офлайн