cmd2 - 在 Python 中快速构建功能丰富且用户友好的交互式命令行应用程序
项目描述
cmd2:沉浸式交互式命令行应用程序
主要特点• 安装• 教程• 使用cmd2 的项目• 2.0 版注意事项
cmd2 是用于在 Python 中构建交互式命令行应用程序的工具。它的目标是让开发人员能够快速轻松地构建功能丰富且用户友好的交互式命令行应用程序。它提供了一个简单的 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 通过创建别名/宏、命令行参数解析和执行 cmd2 脚本创建了“易于过渡到自动化”的第二个支柱。
- 灵活的别名和宏创建,用于快速抽象命令。
run_script使用(@) 和_relative_run_script(@@)编写应用程序的文本文件脚本run_pyscript使用命令对您的应用程序进行强大而灵活的内置 Python 脚本- 与内置回归一起使用的成绩单可以从
history -t或自动生成run_script -t
安装
在所有操作系统上,cmd2都可以使用 pip 安装最新的稳定版本:
pip install -U cmd2
cmd2 适用于 Windows、macOS 和 Linux 上的 Python 3.6+。它是纯 Python 代码,几乎没有第 3 方依赖项。
有关其他安装选项的信息,请参阅 cmd2 文档中的安装说明。
文档
cmd2 的最新文档可以在这里在线阅读:https ://cmd2.readthedocs.io/en/latest/
它以 HTML、PDF 和 ePub 格式提供。
学习 cmd2 api 的最佳方式是深入研究位于源代码中的示例应用程序。
教程
- PyOhio 2019 演示文稿:
- 来自社区的Cookiecutter模板
- cmd2 应用程序的基本 cookiecutter 模板:https ://github.com/jayrod/cookiecutter-python-cmd2
- 具有外部插件支持的高级 cookiecutter 模板:https ://github.com/jayrod/cookiecutter-python-cmd2-ext-plug
- 示例应用程序
你好世界
#!/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版本- 蟒蛇版本
- 操作系统名称和版本
- 你做了什么导致错误发生
- 包括与错误相关的任何回溯或错误消息
使用 cmd2 的项目
| 应用名称 | 描述 | |
|---|---|---|
| 约克3r | 网络和 Web 渗透测试自动化框架 | |
| CephFS 外壳 | Ceph是一个分布式对象、块和文件存储平台 | |
| psiTurk | Amazon Mechanical Turk 上的开放科学平台 | |
| 波塞冬 | 利用软件定义网络 (SDN) 获取网络流量,然后将其提供给许多机器学习技术。 | |
| 打包机 | 基于仿真的 Windows 二进制文件的自动和平台无关解包器 | |
| tomcatmanager | 用于管理 tomcat 服务器的命令行工具和 python 库 | |
| 利用 | 物联网 (IoT) 开发框架 | |
| mptcp分析仪 | 帮助分析 mptcp pcaps 的工具 | |
| 克兰瓦斯 | Instructure 的 Canvas 命令行客户端 |
可能已经不复存在但仍然是很好的例子