2017-05-17 56 views
0

我有兩個論點說,用戶名和密碼Python的 - 相關參數

parser.add_argument('-a1', '--arg1') 
parser.add_argument('-a2', '--arg2') 

我想強迫用戶基於他過去的說法a1值進入arg2;例如,當xyz給出:

例如爲:

myscript.py -a1 abc # OK 
myscript.py -a1 xyz # Error: please enter -a2 value 

回答

1

​​沒有設施建設這樣複雜的依賴關係。

你必須在解析後對此做單獨的測試;只需調用ArgumentParser.error() method與您的錯誤消息,當您的具體條件不滿足:

args = parser.parse_args() 

if args.a1 == 'xyz': 
    parser.error('please enter -a2 value') 
+0

謝謝,Martijn ......我至少可以讓參數而不是它的值。例如,如果用戶使用arg1,那麼他應該被迫使用arg2 ...如果他不使用arg1,那麼arg2不應該被強制... –

+0

@BuggyB:不,只要使用'if args.a1而不是args .a2:parser.error('....')'。參見[Argparse:如果'x'存在,則爲必需參數'y'](// stackoverflow.com/q/19414060) –

0

醜陋的方式是檢查如果Arg1「XYZ」然後調用「輸入()」方法存在這將要求用戶輸入arg2。