cmd2 - 在Python中快速构建功能丰富且用户友好的交互式命令行应用程序
项目描述
cmd2 : 沉浸式交互式命令行应用程序
开发者工具箱 • 哲学 • 安装 • 文档 • 教程 • Hello World • 使用 cmd2 的项目 •
cmd2 是一个用于在 Python 中构建交互式命令行应用程序的工具。其目标是使开发者能够快速轻松地构建功能丰富且用户友好的交互式命令行应用程序。它提供了一个简单的 API,该 API 是 Python 内置的 cmd 模块的扩展。cmd2 在 cmd 的基础上提供了一组丰富的功能,使您的生活更加轻松,并消除了使用 cmd 时所需的大多数样板代码。
开发者工具箱
当开发者创建解决方案时,他们有很多工具来创建丰富的智能用户界面。系统管理员长期以来一直在用从 github 上的陌生人或隔壁办公室的人创建的简单命令行工具来粘合脆弱的工作流程。不幸的是,当 CLI 变得相当复杂时,命令的可发现性往往迅速减弱。另一方面,Web 和传统桌面 GUI 在轻松发现功能方面处于领先地位。我们为美丽着色的显示付出的代价是将不同的应用程序聚集到更大的系统中所需的复杂性。《cmd2》填补了高 命令发现易用性 应用程序和智能工作流自动化系统之间的空白。
cmd2
框架提供了两个世界的绝佳混合。应用程序设计人员可以轻松创建复杂的应用程序,并依赖 cmd2 库提供轻松的用户界面帮助和广泛的自动补全。当用户熟悉功能后,cmd2 变成一个功能丰富的库,允许平滑过渡到完全自动化。如果经过足够的深思熟虑,实现良好的 cmd2 应用程序可以作为一个定制的工作流工具。《cmd2》基于以下两个哲学支柱实现这种灵活性:
- 自动补全
- 自动化过渡
哲学
基于 argparse 库的深度广泛自动补全和帮助文本生成构成了“易于发现命令”的第一个支柱。以下是这个类别中的一些功能。
- 命令、子命令、文件系统路径和 shell 命令的优秀自动补全。
- 通过简单的函数重载进行用户设计命令的自定义自动补全。
- 以极小的摩擦从
persistent_history_file
源添加自动补全。 - 自动补全
argparse
标志和可选参数。 - 轻松启用路径自动补全。
- 当所有其他方法都失败时,基于
choices_provider
的自定义自动补全可以填补任何空缺。
通过别名/宏创建、命令行参数解析和执行 cmd2 脚本来创建“易于过渡到自动化”的第二个支柱。
- 灵活的别名和宏创建,用于快速抽象命令。
- 使用
run_script
(《@》)和_relative_run_script
(《@@》)在文本文件中脚本化您的应用程序 - 使用
run_pyscript
命令强大的灵活的内置 Python 脚本化您的应用程序 - 用于内置回归的转录本可以自动从
history -t
或run_script -t
生成。
安装
在所有操作系统上,都可以使用 pip 安装最新稳定的 cmd2
版本。
pip install -U cmd2
cmd2 在 Windows、macOS 和 Linux 上与 Python 3.6+ 兼容。它是纯 Python 代码,依赖第三方库很少。
有关其他安装选项的信息,请参阅 cmd2 文档中的 安装说明。
文档
cmd2 的最新文档可以在此在线阅读:https://cmd2.readthedocs.io/en/latest/
它提供 HTML、PDF 和 ePub 格式。
学习 cmd2 API 的最佳方式是深入研究位于源代码 examples 目录下的示例应用程序。
教程
- PyOhio 2019 演讲
- Cookiecutter 社区模板
- cmd2 应用程序的基本 cookiecutter 模板:https://github.com/jayrod/cookiecutter-python-cmd2
- 支持外部插件的进阶 cookiecutter 模板:https://github.com/jayrod/cookiecutter-python-cmd2-ext-plug
- 示例应用程序
Hello World
#!/usr/bin/env python
"""A simple cmd2 application."""
import cmd2
class FirstApp(cmd2.Cmd):
"""A simple cmd2 application."""
def do_hello_world(self, _: cmd2.Statement):
self.poutput('Hello World')
if __name__ == '__main__':
import sys
c = FirstApp()
sys.exit(c.cmdloop())
发现错误了吗?
如果您认为您发现了错误,请首先阅读已打开的 问题。如果您确信这是一个新错误,请继续创建一个新的 GitHub 问题。请确保提供尽可能多的信息,以便我们能够重现错误。至少,请说明以下内容
cmd2
版本- Python 版本
- 操作系统名称和版本
- 导致错误发生您所做的事情
- 包括与错误相关的任何回溯或错误消息
使用 cmd2 的项目
应用程序名称 | 描述 | |
---|---|---|
Jok3r | 网络与 Web 渗透测试自动化框架 | |
CephFS Shell | Ceph 是一个分布式的对象、块和文件存储平台 | |
psiTurk | 一个基于 Amazon Mechanical Turk 的开放科学平台 | |
Poseidon | 利用软件定义网络 (SDN) 获取并随后将网络流量输入到多种机器学习技术中。 | |
Unipacker | 基于仿真的 Windows 二进制文件的自动和平台无关的解包器 | |
tomcatmanager | 用于管理 tomcat 服务器的命令行工具和 Python 库 | |
Expliot | 物联网 (IoT) 利用框架 | |
mptcpanalyzer | 帮助分析 mptcp pcaps 的工具 | |
clanvas | Instructure 的 Canvas 命令行客户端 |
可能已停止但仍有用的示例
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源分发
构建分发
cmd2-2.4.3.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 71873c11f72bd19e2b1db578214716f0d4f7c8fa250093c601265a9a717dee52 |
|
MD5 | b2c8691ef6300c2c72c697b846c6be1e |
|
BLAKE2b-256 | 1304b85213575a7bf31cbf1d699cc7d5500d8ca8e52cbd1f3569a753a5376d5c |
cmd2-2.4.3-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f1988ff2fff0ed812a2d25218a081b0fa0108d45b48ba2a9272bb98091b654e6 |
|
MD5 | 6987e8ec78704ad4bb885f39e19ca991 |
|
BLAKE2b-256 | f39a495a0577cbae4a11dc0b2a2174688f0bab83d1b81245a105f1613a365828 |