23.1. cmd-支持面向行的命令解释器

源代码: Lib/cmd.py


Cmd类为编写面向行的命令解释器提供了一个简单的框架。这些通常对于测试工具,Management 工具和原型很有用,这些工具随后将被包装在一个更复杂的界面中。

可选参数* completekey 是完成密钥的readline名称;它默认为 Tab。如果 completekey *不是Nonereadline可用,则命令自动完成。

可选参数* stdin stdout *指定 Cmd 实例或子类实例将用于 Importing 和输出的 Importing 和输出文件对象。如果未指定,则默认为sys.stdinsys.stdout

如果要使用给定的* stdin ,请确保将实例的use_rawinput属性设置为False,否则 stdin *将被忽略。

在版本 2.3 中进行了更改:添加了* stdin stdout *参数。

23.1.1. Cmd 对象

Cmd实例具有以下方法:

可选参数是在第一个提示之前发出的标题或简介字符串(此值将覆盖intro class 属性)。

如果加载了readline模块,则 Importing 将自动继承 bash 之类的历史列表编辑(例如,Control-P 滚动回到上一个命令,Control-N 向前滚动到下一个命令,Control-F 将光标移动到非破坏性地向右移动,Control-B 则以无破坏性地将光标移动到左侧,依此类推)。

Importing 的文件末尾作为字符串'EOF'传回。

解释器实例只有在具有方法do_foo()的情况下,才能识别命令名称foo。在特殊情况下,以字符'?'开头的行被分派给方法do_help()。作为另一种特殊情况,以字符'!'开头的行被分派给方法do_shell()(如果定义了这样的方法)。

postcmd()方法返回 true 值时,此方法将返回。 postcmd()的* stop *参数是命令的相应do_*()方法的返回值。

如果启用了完成,则将自动完成命令的完成,并且pass使用参数* text line begidx endidx *调用complete_foo()来完成命令 args 的完成。 * text *是我们try匹配的字符串前缀:所有返回的匹配项都必须以它开头。 * line 是当前 Importing 行,其中前导空格已删除, begidx endidx *是前缀文本的开始和结束索引,可根据参数所处的位置来提供不同的补全。

Cmd的所有子类都继承了 sched 义的do_help()。用参数'bar'调用的此方法将调用相应的方法help_bar(),如果不存在,则打印do_bar()的文档字符串(如果有)。 do_help()不带任何参数,列出所有可用的帮助主题(即,具有相应help_*()方法的所有命令或具有文档字符串的命令),并列出所有未记录的命令。

Cmd个子类的实例具有一些公共实例变量:

首页