Python Cmd: как редактировать последнюю команду

Я работаю над небольшим приложением командной строки на основе модуля Python Cmd. Я не вижу, как показать последнюю команду в командной строке, чтобы ее можно было отредактировать пользователем и повторно отправить.

Вопрос не в том, как сохранить последнюю команду. Речь идет о том, как показать его в приглашении и позволить пользователю редактировать его

2 ответа

Из документов для CMD, Cmd имеет параметр:

Cmd.use_rawinput Флаг, по умолчанию равный true. Если true, cmdloop() использует raw_input() для отображения приглашения и чтения следующей команды; если false, используются sys.stdout.write() и sys.stdin.readline(). (Это означает, что при импорте readline в системах, которые его поддерживают, интерпретатор будет автоматически поддерживать Emacs-подобные редактирование строк и нажатия клавиш истории команд.)

То есть, вы можете использовать стрелку вверх, чтобы вызвать последнюю команду:

>>> import cmd
>>> C = cmd.Cmd()
>>> C.cmdloop()
(Cmd) command1
*** Unknown syntax: command1
(Cmd) command1

В последней строке выше я нажал стрелку вверх, и она запомнила мою последнюю команду.

Просто используйте библиотеку readline. Вы можете найти пример в документации по Python: https://docs.python.org/3/library/readline.html

Другие вопросы по тегам