Мне было интересно, как вы собираетесь составлять список команд, которые пользователь может ввести. Например, пользовательские типы в "who", чтобы получить список тех, кто включен в MUD. Все ли выполнено, используя if, elif и еще в питонах?
Я использую Python 3.1 btw.
Неа. Словарь рассылки.
def who(*args, **kwargs):
...
commands = {
'who': who,
...
}
...
if command in commands:
commands[command](*args, **kwargs)
else:
print('Bad command or file name')
Для этого создан модуль cmd
. Просто подкласс cmd.Cmd()
, включая набор методов, начинающихся с do_XXX
- поэтому do_who()
предоставит команду who
.
Вы можете импортировать модуль sys и использовать часть sys.stdin.readline() этого модуля. Это будет принимать входные данные из командной строки или терминала, что означает, что вы должны запускать его из одного из них.
import sys
sys.stdout.write("$ ")
command = sys.stdin.readline()
command = command.strip() #Remove the new line character
if command = argument:
do code
elif command = other argument:
do more code
else:
Thats not a command than
Преимущества использования этого в том, что в Linux-системе программа все еще может работать. Например, я использую его для принятия команд для проверки моей серверной/клиентской программы, чтобы найти сумму из 3 кубов. Я могу сказать, что он должен выйти, проверить найденные кубы или посмотреть список клиентов и потоков.
sys.stdin
использовался таким образом - и он дает мне TypeError
- вы уверены, что он работает?
Найдите функцию input
, чтобы получить доступ к командной строке от пользователя:
вход ([подсказка])
Если аргумент приглашения присутствует, он записывается на стандартный вывод без конечной новой строки. функция затем считывает строку с ввода, преобразует его в строку (удаление trailing newline) и возвращает это.
Вот небольшой пример:
s = input("Enter a command: ")
if s == 'who':
# do stuff
elif s == 'help':
# show help
else
# do other stuff