2013-03-21 2 views
6

Я использую модуль cmd в Python для создания небольшой интерактивной программы командной строки. Однако из этой документации: http://docs.python.org/2/library/cmd.html, неясно, что это чистый способ выхода из программы (т. Е. Cmdloop) программно.Как легко выйти из цикла cmd модуля cmd

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

ответ

11

Вам необходимо переопределить метод postcmd:

Cmd.postcmd (остановка, линия)

метод Hook выполняется только после того, как команда отправки закончена. Этот метод является заглушкой в ​​Cmd; он существует для переопределения подклассами. строка - это командная строка, которая была выполнена, а stop - флаг, который указывает, будет ли выполнение прекращено после вызова postcmd(); это будет возвращаемое значение метода onecmd(). Возвращаемое значение этого метода будет использоваться в качестве нового значения для внутреннего флага , который соответствует остановке; возврат false приведет к продолжению интерпретации .

А из документации cmdloop:

Этот метод будет возвращать, когда метод postcmd() возвращает истинное значение . Аргумент stop для postcmd() - это возвращаемое значение из соответствующего метода do _ *() команды .

Другими словами:

import cmd 
class Test(cmd.Cmd): 
    # your stuff (do_XXX methods should return nothing or False) 
    def do_exit(self,*args): 
     return True 
+0

Интересно, если я могу просто сделать определение функции do_exit (самоощущение, линия): возвращающих true', так что выдача команды 'exit' будет вспыхнуть' cmdloop' , –

+1

Да, это точно. – isedev

Смежные вопросы