Как я могу сделать список вызываемых команд Python? - PullRequest
1 голос
/ 30 апреля 2011

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

Я использую Python 3.1, кстати.

Ответы [ 4 ]

11 голосов
/ 30 апреля 2011

Неа. Диспетчерский словарь.

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

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

...
if command in commands:
  commands[command](*args, **kwargs)
else:
  print('Bad command or file name')
4 голосов
/ 30 апреля 2011

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

0 голосов
/ 30 апреля 2011

Вы можете импортировать модуль 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 голосов
/ 30 апреля 2011

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

вход ([приглашение])

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

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

s = input("Enter a command: ")
if s == 'who':
  # do stuff
elif s == 'help':
  # show help
else
  # do other stuff
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...