Задать вопрос
@stead

Как создать окно команд в python?

Я хотел бы создать программу в которой будет консоль может принимать комманды пользователя.
Допустим что в начале строки в cmd будет ">". И эта стрелка будет показывать пользователю что он может ввести команды.
У нас уже будет список команд которые добавил создатель. И если юзер ввел команду то мы вызываем метод, в котором будут все махинации и тд. Наглядно это показано в серверах популярной игры майнкрафт где в консоли сервера мы может от лица администратора выполнять команды. И Когда он ввел команду выполнилась эта команда и пользователь мог опять вводить команды? хотел бы узнать принцип и примеры если можно. Был бы очень благодарен)
  • Вопрос задан
  • 1753 просмотра
Подписаться 1 Средний Комментировать
Решения вопроса 2
trapwalker
@trapwalker Куратор тега Python
Программист, энтузиаст
А что именно у вас вызывает вопросы?
Вы реализовываете функцию, которая принимает текущий контекст, строку команды, и поток для вывода выхлопа.
Если нужно REPL в терминале, то в цикле функцией input запрашиваете команду, передаёте её в выше упомянутую функцию.
Можно сделать не функцию, а класс, тогда он может ъанить в себе контекст текущего состояния вашей командной оболочки и поток для вывода, а функция обработки команды может быть не одна, а много методов, помеченных префиксами или декораторами. так для каждой команды можно свой метод описать, а декораторами можно указывать права доступа к соответствующей команде, какую-то еще специфику.
Если нужны команды с аргументами, ключами, параметрами, с автодокументацией, то можно воспользоваться встроенными библиотеками парсинга командной строки, например optparse, или сторонней развесистой библиотекой, например, click.

Если командная стрроука нужна не в терминале, а, скажем, в браузере, то интерфейс обработки тот же, но в цикле приёма команд вы можете брать их не из stdin, а из веб-сокета или API на flask. Можно создать окно с помощью Tkinter или PySide\PyQt и запрашивать текст команд там. Можно поискать библиотеки реализации расширенных термиальных воможностей, где будет автодополнение, подсказки и прочее.

В целом, судя по вашему вопросу, вам стоит либо остановиться на простейшем REPL в терминале как я написал в начале, либо подучиться немного питону в частности и программированию в целом и тогда этот вопрос у вас уже не встанет, поскольку окажется тривиальным.

Успехов.
Кстати, я не искал, возможно (и даже наверняка) есть готовые продвинутые библиотеки для реализации кастомных REPL питоне. Наверно кто-то подкинет такие варианты в альтернативных ответах.
Ответ написан
Комментировать
hottabxp
@hottabxp Куратор тега Python
Сначала мы жили бедно, а потом нас обокрали..
Накидал простой пример:
import sys


def admin():
	password = input("Введите пароль:")
	if password == '12345':
		print('Привет, админ!')
	else:
		print('Не верный пароль!')

while True:
	command = input(">")
	if command == 'admin':
		admin()
	elif command == 'exit':
		sys.exit()
	else:
		print('Wrong command!')
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы