2015-04-15 20 views
2

腳本應按照以下步驟運行,並輸出相應的結果。需要的是,如果腳本以-s運行,則需要-n-n是不是也不應該被允許通過(或者我可以忽略它?)以及-g選項。使用argparse時,如何在用戶傳遞特定標誌時需要兩個參數?

./script.py enable -g servergroupa 
./script.py enable -s servicename -n servername 

代碼:

enable = subparsers.add_parser('enable') 
enable_mutex = enable.add_mutually_exclusive_group(required=True) 
enable_mutex.add_argument('-g', '--servicegroupname', help='servicegroup name', metavar='<servicegroup name>') 
enable_mutex.add_argument('-s', '--servicename', help='service name', metavar='<service name>') 
enable_mutex.set_defaults(func=servicegroup_action) 
+0

FWIW,它似乎更容易編程這個應用程序(並使用它)只需要兩個子命令'enable-group'和'enable-service'需要正確數量的位置參數(而不是隻是'enable'),因爲據我所知,沒有辦法像純粹的'argparse'那樣以你想要的方式來完成它。 – Jack

回答

0

蝙蝠有幾個選項:

1)檢查用戶輸入parse_args後:檢查-g條目(如果存在)和-n條目存在引發OptionError(或類似)異常,或者像你說的那樣簡單地忽略它。

2)不要使用-n選項:強制用戶通過nargs在-s參數後面輸入2個值。 3)如果這些都是你的論點,看起來好像在啓用後總是有1或2個總數。所以,不要使用任何選項標誌並簡單地使用位置標記。如果有計數1假設它是組,如果計數爲2假設它是個體與名稱。

相關問題