2014-12-02 106 views
2

在這個問題上蟒蛇argparse add_argument_group需要

argparse:或者需要兩個參數

我找到我想要的解決方案的參考,但它是不正確的。

我需要2的至少1選項存在,選項1,選項2或兩者...

的add_argument_group函數不具有必需的參數。 add_mutually_exclusive函數有它,但它迫使我在2個選項之間進行選擇,這不是我想要的。

RDS,

回答

0

argument_group只是控制幫助顯示。它不會影響解析或檢查錯誤。 mutually_exclusive_group影響使用情況顯示和發生的測試,但正如您所注意到的,其邏輯不是您想要的。

有一個Python錯誤問題,要求某種形式的嵌套'包容性'組。但是允許嵌套和所有版本和/或/異或邏輯的一般形式並不是一個簡單的補充。

我認爲你最簡單的解決方案是在解析後測試args。如果錯誤的組合錯誤,則引發錯誤。

假設兩個參數的默認值是None

if args.option1 is None and args.option2 is None: 
    parser.error('at least one of option1 and option2 is required') 

什麼是有意義的使用習慣? required mutually exclusive' uses(OPT1 | OPT2).(OPT1 & OPT2)might indicate that both are required. Your case is a非排他性或`

usage: PROG [-h] (--opt1 OPT1 ? --opt2 OPT2)