什么是“干净”的方式来实现一个命令行界面,类似于Git的,例如:实现“[command] [action] [parameter]”样式的命令行界面?
git push origin/master
git remote add origin git://example.com master
理想的情况下也允许更灵活的分析,例如,
jump_to_folder app theappname v2
jump_to_folder app theappname source
jump_to_folder app theappname source v2
jump_to_folder app theappname build v1
jump_to_folder app theappname build 1
jump_to_folder app theappname v2 build
jump_to_folder
是脚本名称,app
是命令,theappname
是“固定位置”参数,“build”和“v2”等是参数(例如,可能的参数是任何数字/以av为前缀的任何数字,或者构建/ source/tmp/config)
我可以用一系列if
/else
/elifs
手动解析参数,但是必须有一种更优雅的方式来做到这一点?
作为一个完全理论上例如,我可以描述UI模式..
app:
fixed: application_name
optional params:
arg subsection:
"build"
"source"
"tmp"
"config"
arg version:
integer
"v" + integer
然后解析虽然上面的架构提供的参数,并获得了词典:
>>> print schema.parse(["app", "theappname", "v1", "source"])
{
"application_name": "theappname",
"params":{
"subsection": "source",
"version":"v1"
}
}
是否这样的系统存在?如果不是,我将如何去执行这些方面的东西?从我的剧本之一
问题这是参数是固定的..例如,你不能轻易拥有一个“v001”..“v102”选项,短于每个组合创建一个键.. – dbr 2008-12-12 11:34:40
是的,我知道,这就是为什么我提到了argparse。例如,如果您的“命令”和“操作”相对较少,但参数很多,则可以使用我使用的方法分派到特定的操作,然后将参数(和可选的关键字参数)传递到使用argparse的脚本。 – kmelva 2008-12-12 11:40:46
加上,你可以添加一个元命令'help'来打印命令的内容并显示他们的.__ doc__字符串 – pjz 2008-12-12 14:52:26