我想使用argparse來構建一個帶有子命令的工具。可能的語法是python argparse子命令依賴和衝突
/tool.py下載--from 1234 --interval 60
/tool.py下載--build 1432個
/tool.py乾淨--numbers 10
所以我想argparse使用來實現:
- 確保 '--from' 和 '--interval' 是一個lways一起使用
- 確保「--build」不會與其它參數
使用,但我沒有找到一個方法來配對「--from」和「--internal」爲一組,然後使該組與'--build'互斥。
下面是我目前的代碼,它只會使'--from'和'--build'是互斥的。既不確保' - 從'和' - 間隔'在一起,也不確保' - 間隔'和' - 建立'是互斥的。
parser = argparse.ArgumentParser(description='A Tool')
subparsers = parser.add_subparsers(help='sub-command help')
#create the parser for the 'download' command
download_parser = subparsers.add_parser('download', help='download help')
download_parser.add_argument('--interval', dest='interval', type=int,help='interval help')
group = download_parser.add_mutually_exclusive_group()
group.add_argument('--from',type=int, help='from help')
group.add_argument('--build', type=int, help='interval help')
例如,
/tool.py下載--from 1234
不應該被允許的,因爲 '--from' 必須以 '--interval' 工作。但是我的代碼默默接受它。
而且
/tool.py下載--interval 1234 --build 5678
不應該被允許的,因爲 '--build' 不能與其他參數一起使用。但我的代碼也接受它。
任何建議將不勝感激。謝謝。
你的代碼有,但究竟是不是工作?給出一個錯誤行爲的例子,並解釋你期望如何。 – 2011-03-02 09:29:19
我加了2個錯誤行爲的例子。感謝您的建議。 – Landy 2011-03-02 10:09:18