Сообщить об ошибке.

Атрибуты и методы объекта Cmd модуля cmd в Python

Экземпляр класса cmd.Cmd модуля cmd имеет следующие методы и несколько общедоступных переменных:

Содержание:


Методы экземпляра класса cmd.Cmd.

Cmd.cmdloop(intro=None):

Метод Cmd.cmdloop() неоднократно выдает приглашение командной строки, принимает ввод, анализирует начальный префикс полученного ввода и отправляет методы действия, передавая им остаток строки в качестве аргумента.

Необязательный аргумент-это баннер или строка ввода, которая должна быть выдана перед первым приглашением. Он переопределяет атрибут Cmd.intro.

Если импортирован модуль readline, то ввод автоматически унаследует редактирование списка истории в стиле bash. Например, клавиша Ctrl-P прокручивает назад к последней команде, Ctrl-N переходит к следующей, Ctrl-F перемещает курсор вправо, Ctrl-B перемещает курсор влево и т. д.).

Конец файла при вводе передается обратно как строка 'EOF'.

Экземпляр интерпретатора распознает имя команды foo тогда и только тогда, когда у него есть метод .do_foo(). Как особый случай, строка, начинающаяся с символа '?' отправляется методу do_help(). Другой особый случай - строка, начинающаяся с символа '!' отправляется методу do_shell() (если такой метод определен).

Метод Cmd.cmdloop() возвращает, когда метод Cmd.postcmd() возвращает значение True. Аргумент stop для метода Cmd.postcmd() - это возвращаемое значение команды из соответствующего метода .do_*().

Если завершение (completion) включено, то завершение команд будет выполняться автоматически, а завершение команд args выполняется путем вызова метода .complete_foo() с аргументами text, line, beginidx и endidx.

  • Аргумент text - это строковый префикс, который мы пытаемся сопоставить: все возвращаемые совпадения должны начинаться с него.
  • Аргумент line - это текущая строка ввода с удаленными ведущими пробелами.
  • Аргументы beginidx и endidx - это начальный и конечный индексы текста префикса, которые могут использоваться для обеспечения различного завершения в зависимости от того, в какой позиции находится аргумент.

Все подклассы Cmd наследуют предопределенный метод .do_help(). Этот метод, вызываемый с аргументом bar, вызывает соответствующий метод .help_bar() и если он отсутствует, то печатает строку документации метода .do_bar(), если конечно она доступна.

Без аргументов, метод .do_help() перечисляет все доступные разделы справки, а также перечисляет все недокументированные команды. То есть все команды с соответствующими методами .help_*() или команды, у которых есть строки документации.

Cmd.onecmd(str):

Метод Cmd.onecmd() интерпретирует аргумент str, как если бы он был введен в ответ на запрос.

Это поведение можно изменить, но обычно в этом нет необходимости. Смотрите полезные хуки выполнения в методах Cmd.precmd() и Cmd.postcmd().

Возвращаемое значение - это флаг, указывающий, следует ли прекратить интерпретацию команд интерпретатором. Если для команды str существует метод .do_*(), то возвращается значение этого метода, в противном случае возвращается значение из метода .default().

Cmd.emptyline():

Метод Cmd.emptyline() вызывается, когда в ответ на приглашение вводится пустая строка. Если этот метод не отменен, то он повторяет последнюю введенную непустую команду.

Cmd.default(line):

Метод Cmd.default() будет вызываться в строке ввода, когда префикс команды не распознается. Если этот метод не переопределен, то он выводит сообщение об ошибке и возвращает результат.

Cmd.completedefault(text, line, begidx, endidx):

Метод Cmd.completedefault() будет вызываться для завершения строки ввода, когда недоступен специфичный для команды метод .complete_*(). По умолчанию он возвращает пустой список.

  • Аргумент text - это строковый префикс, который мы пытаемся сопоставить: все возвращаемые совпадения должны начинаться с него.
  • Аргумент line - это текущая строка ввода с удаленными ведущими пробелами.
  • Аргументы beginidx и endidx - это начальный и конечный индексы текста префикса, которые могут использоваться для обеспечения различного завершения в зависимости от того, в какой позиции находится аргумент.

Cmd.precmd(line):

Метод Cmd.precmd() представляет собой хук, выполняемый непосредственно перед командной строкой line, но после того, как приглашение ввода будет сгенерировано и выдано.

Этот метод является заглушкой в ​​cmd.Cmd. Он существует для переопределения в подклассах. Возвращаемое значение используется как команда, которая будет выполняться методом Cmd.onecmd(). Реализация метода Cmd.precmd() может переписать команду или просто вернуть строку line без изменений.

Cmd.postcmd(stop, line):

Метод Cmd.postcmd() представляет собой перехватчик, выполняемый сразу после завершения отправки команды. Этот метод является заглушкой в ​​cmd.Cmd. Он существует для переопределения в подклассах.

Аргумент line - это командная строка, которая была выполнена, а аргумент stop - флаг, указывающий, будет ли выполнение прекращено после вызова postcmd(). Это будет возвращаемое значение метода Cmd.onecmd().

Возвращаемое значение этого метода будет использоваться в качестве нового значения для внутреннего флага, который соответствует stop; Возвращаемое значение False приведет к продолжению интерпретации.

Cmd.preloop():

Метод Cmd.preloop() представляет собой перехватчик, выполняется один раз при вызове Cmd.cmdloop(). Этот метод является заглушкой в ​​cmd.Cmd. Он существует для переопределения в подклассах

Cmd.postloop():

Метод Cmd.postloop() представляет собой хук и выполняется один раз, когда метод Cmd.cmdloop() собирается вернуть результат. Этот метод является заглушкой в ​​cmd.Cmd. Он существует для переопределения в подклассах

Общедоступные переменные экземпляра класса cmd.Cmd.

Cmd.prompt:

Атрибут Cmd.prompt представляет собой приглашение, выводимое для запроса ввода данных.

Cmd.identchars:

Атрибут Cmd.identchars представляет собой строку символов, принятых для префикса команды.

Cmd.lastcmd:

Атрибут Cmd.lastcmd представляет собой последний непустой префикс команды, который был замечен.

Cmd.cmdqueue:

Атрибут Cmd.cmdqueue представляет собой список строк ввода в очереди.

Список Cmd.cmdqueue проверяется в методом Cmd.cmdloop(), когда требуется новый ввод. Если он непустой, то его элементы будут обрабатываться по порядку, как если бы они были введены в командной строке.

Cmd.intro:

Атрибут Cmd.intro - это строка, которую нужно оформить как заставку или баннер. Может быть отменено путем передачи аргумента методу Cmd.cmdloop().

Cmd.doc_header:

Атрибут Cmd.doc_header представляет собой заголовок , который нужно выдать, если вывод справки содержит раздел для документированных команд.

Cmd.misc_header:

Атрибут Cmd.misc_header представляет собой заголовок , который нужно выдать, если вывод справки содержит раздел для различных разделов справки (то есть существуют методы .help_*() без соответствующих методов .do_*()).

Cmd.undoc_header:

Атрибут Cmd.undoc_header представляет собой заголовок, который нужно выдать, если в выводе справки есть раздел для недокументированных команд (то есть есть методы do_*() без соответствующих методов .help_*()).

Cmd.ruler:

Атрибут Cmd.ruler представляет собой символ, используемый для рисования разделительных линий под заголовками справочных сообщений. Если равен None, то разделительная линия не рисуется. По умолчанию это символ '='.

Cmd.use_rawinput:

Атрибут Cmd.use_rawinput представляет собой флаг, по умолчанию имеющий значение True.

Это означает, что при импорте модуля readline в системах, поддерживающих его, интерпретатор автоматически будет поддерживать Emacs-подобное редактирование строк и нажатия клавиш истории команд.