Python: cmd выполняет последнюю команду, пока строка приглашения и пустая строка

Вопрос может быть недостаточно ясен.

Позвольте мне подробно рассказать. Я использую библиотеку python cmd для реализации своей собственной структуры CLI, и при нажатии кнопки ввода без ввода какой-либо команды она выполняет последнюю команду. Этого я не хочу делать.

mycli~: cmd --args
executes command
execution stops
mycli~:[hit enter button]

Затем он снова выполнит cmd --args. Однако я просто хочу спуститься с новой строкой.

Ответ 1

После долгого поискового робота я не мог найти ценного совета, чтобы предотвратить это. Я решил войти в библиотеку cmd и переопределить метод.

Я понял, что cmd последовательно выполняет методы precmd, onecmd и postcmd. Я проследил код и увидел, что onecmd является основным, который преувеличивает данную строку. Он проверяет параметры, затем проверяет строку. Если строка пуста, она вызывает метод пустой линии и возвращает последнюю команду, которая является глобальной переменной, называемой lastcmd. Я переопределяю метод пустой линии, тогда моя проблема исправлена.

Вот метод, который я написал переопределить.

def emptyline(self):
        """Called when an empty line is entered in response to the prompt.

        If this method is not overridden, it repeats the last nonempty
        command entered.

        """
        if self.lastcmd:
            return self.onecmd(self.lastcmd)

И вот моя:

def emptyline(self):
        """Called when an empty line is entered in response to the prompt.

        If this method is not overridden, it repeats the last nonempty
        command entered.

        """
        if self.lastcmd:
            self.lastcmd = ""
            return self.onecmd('\n')

Это не может быть большой проблемой, но помните об этом на всякий случай.

Ответ 2

def emptyline(self):
         pass

Будет хорошо!