Python cmd 模块
实例
定义一个简易的命令解释器并调用一个命令方法:
import cmd
class Hello(cmd.Cmd):
def do_hello(self, arg):
print(f"Hello, {arg}!")
h = Hello()
h.do_hello("Linus")
亲自试一试 »
定义和用法
cmd 模块提供了一个简单的框架,用于编写面向行的命令解释器。
使用它来构建类似 REPL 的 shell,并支持命令解析、帮助和 Tab 键自动补全。
成员
| 成员 | 描述 |
|---|---|
| Cmd | 用于构建命令解释器的基类。 |
| cmdloop() | 进入 REPL 循环以读取和执行命令。 |
| columnize() | 将字符串列表格式化为多列显示。 |
| completedefault() | 当未定义 complete_* 时,使用 Tab 键自动补全。 |
| complete() | 调用 complete_* 方法进行 Tab 键自动补全。 |
| completenames() | 返回与给定前缀匹配的命令名称。 |
| complete_help() | 内置 help 命令的 Tab 键补全。 |
| default() | 当不存在 do_* 处理程序时,处理输入行。 |
| do_help() | 列出可用命令和帮助文本的内置帮助命令。 |
| emptyline() | 处理空输入行(默认重复上一个命令)。 |
| get_names() | 返回命令和辅助方法的名称列表。 |
| print_topics() | 由 do_help 使用的辅助方法,用于格式化主题列表。 |
| onecmd() | 解析并执行单个命令行字符串。 |
| parseline() | 将命令行解析为命令名称和参数。 |
| postcmd() | 命令方法返回后调用的钩子;可以修改循环流程。 |
| postloop() | REPL 循环即将退出时调用一次的钩子。 |
| precmd() | 命令执行前调用的钩子;可以重写命令行。 |
| preloop() | 进入 REPL 循环前调用一次的钩子。 |
| setdefaultcompletekey() | 设置默认补全键(例如,Tab)。 |
| prompt | 每行输入前显示的提示字符串(例如,"(Cmd)")。 |
| intro | 循环开始时打印一次的可选介绍横幅。 |
| use_rawinput | 是否使用内置的 input() 函数读取行(默认为 True)。 |
| completekey | REPL 中用于自动补全的按键(默认为 "tab")。 |
| stdin | 解释器使用的输入流对象(默认为 sys.stdin)。 |
| stdout | 解释器使用的输出流对象(默认为 sys.stdout)。 |
| cmdqueue | 提示用户之前要处理的命令行队列。 |
| ruler | 用于帮助列表分隔符的字符(默认为 '-')。 |
| doc_header | 已记录命令的标题标签。 |
| misc_header | 其他帮助主题的标题标签。 |
| undoc_header | 未记录命令的标题标签。 |
| nohelp | 当某个主题没有可用帮助时显示的消息。 |
| lastcmd | 最后执行的命令行(用于emptyline()行为)。 |

