使用 cmdln 在 Python 中实现“嵌套”子命令。
我不确定我在这里使用的术语是否正确。我正在尝试使用 cmdln 实现命令行工具允许“嵌套”子命令。这是一个真实世界的例子:
git svn rebase
实现它的最佳方法是什么?我一直在文档、此处和整个网络中搜索有关此的更多信息,但都没有找到。 (也许我搜索的词有误。)
缺少自动执行此操作的未记录功能,我最初的想法是让先前的子命令处理程序确定存在另一个子命令并再次分派(dispatch)命令调度程序。不过,我查看了 cmdln 的内部结构,调度程序是一个私有(private)方法 _dispatch_cmd。我的下一个想法是创建我自己的 sub-sub-command 调度程序,但这似乎不太理想且困惑。
如有任何帮助,我们将不胜感激。
最佳答案
晚会来晚了,但我已经做了很多次,并且发现 argparse
非常笨拙。这促使我编写了一个名为 arghandler 的 argparse
扩展。 ,它对此有明确的支持 - 可以使用基本上零行代码实现子命令。
这是一个例子:
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/