python - 我应该如何在 Python 中实现 "nested"子命令?

标签 python command-line subcommand

使用 cmdln 在 Python 中实现“嵌套”子命令。

我不确定我在这里使用的术语是否正确。我正在尝试使用 cmdln 实现命令行工具允许“嵌套”子命令。这是一个真实世界的例子:

git svn rebase

实现它的最佳方法是什么?我一直在文档、此处和整个网络中搜索有关此的更多信息,但都没有找到。 (也许我搜索的词有误。)

缺少自动执行此操作的未记录功能,我最初的想法是让先前的子命令处理程序确定存在另一个子命令并再次分派(dispatch)命令调度程序。不过,我查看了 cmdln 的内部结构,调度程序是一个私有(private)方法 _dispatch_cmd。我的下一个想法是创建我自己的 sub-sub-command 调度程序,但这似乎不太理想且困惑。

如有任何帮助,我们将不胜感激。

最佳答案

晚会来晚了,但我已经做了很多次,并且发现 argparse 非常笨拙。这促使我编写了一个名为 arghandlerargparse 扩展。 ,它对此有明确的支持 - 可以使用基本上零行代码实现子命令。

这是一个例子:

from arghandler import *

@subcmd
def push(context,args):
    print 'command: push'

@subcmd
def pull(context,args):
    print 'command: pull'

# run the command - which will gather up all the subcommands
handler = ArgumentHandler()
handler.run()

关于python - 我应该如何在 Python 中实现 "nested"子命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8512253/

相关文章:

node.js - npm - 有关已安装 Node 模块命令行参数的问题

linux - Shell如何通过替换路径字符串中的子字符串来获取新路径

Java CLI 解析器

python - python cmd模块中的选项卡自动完成和子命令的简单实现?

python - Flask View 测试 : How do I prevent data from being saved to the database?

python - 使用 web2py 修改 SQL 表模式

python - Numpy:搜索第一个匹配行

python - 将 png 插入/调整到绘图 [matplotlib]

Python argparse 位置参数和子命令

c++ - 使用 cmd 运行 C++ 程序