什麼是「乾淨」的方式來實現一個命令行界面,類似於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