Как я могу сделать список вызываемых команд Python?

1

Мне было интересно, как вы собираетесь составлять список команд, которые пользователь может ввести. Например, пользовательские типы в "who", чтобы получить список тех, кто включен в MUD. Все ли выполнено, используя if, elif и еще в питонах?

Я использую Python 3.1 btw.

Теги:
python-3.x
command

4 ответа

11

Неа. Словарь рассылки.

def who(*args, **kwargs):
   ...

commands = {
  'who': who,
   ...
}

...
if command in commands:
  commands[command](*args, **kwargs)
else:
  print('Bad command or file name')
  • 0
    обратите внимание, что пользовательским командам не нужно совпадать с именем функции, и это хороший способ предоставить разным игрокам непрозрачный доступ к различным наборам команд. В то же время, как кодер, вы сможете отличить wizard_say () от player_say (). Я имею в виду, что у каждой учетной записи будет свой словарь команд.
4

Для этого создан модуль cmd. Просто подкласс cmd.Cmd(), включая набор методов, начинающихся с do_XXX - поэтому do_who() предоставит команду who.

0

Вы можете импортировать модуль 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 кубов. Я могу сказать, что он должен выйти, проверить найденные кубы или посмотреть список клиентов и потоков.

  • 0
    Я никогда не видел, чтобы sys.stdin использовался таким образом - и он дает мне TypeError - вы уверены, что он работает?
  • 0
    Я только что проверил это сам, он работает из-за модуля, который я использую для приема запросов на подключение, который имеет встроенную поддержку для этого. Может быть такой модуль для общего пользования, но в противном случае не обращайте внимания на мой ответ.
Показать ещё 1 комментарий
0

Найдите функцию input, чтобы получить доступ к командной строке от пользователя:

вход ([подсказка])

Если аргумент приглашения присутствует, он записывается на стандартный вывод без конечной новой строки. функция затем считывает строку с ввода, преобразует его в строку (удаление trailing newline) и возвращает это.

Вот небольшой пример:

s = input("Enter a command: ")
if s == 'who':
  # do stuff
elif s == 'help':
  # show help
else
  # do other stuff

Ещё вопросы

Сообщество Overcoder
Наверх
Меню