我認爲這是很難實現,包括一個很好的幫助消息,而只使用標準argparse函數。但是,您可以在解析參數後自行輕鬆地進行測試。你可以在結尾描述額外的需求。請注意,使用數字作爲選項是不尋常的,我必須使用dest ='two',因爲args.2不是有效的語法。
#!/usr/bin/env python
import argparse
parser = argparse.ArgumentParser(
description='bla bla',
epilog='Note: arguments -3 and -4 are required when -2 is missing')
parser.add_argument('-2', dest='two', action='store_true')
parser.add_argument('-3', dest='three')
parser.add_argument('-4', dest='four')
parser.add_argument('-5', dest='five')
args = parser.parse_args()
if not args.two and (args.three is None or args.four is None):
parser.error('arguments -3 and -4 are required when -2 is missing')
print 'Good:', args
有了這些結果:
[~]: ./test.py -h
usage: test.py [-h] [-2] [-3 THREE] [-4 FOUR] [-5 FIVE]
bla bla
optional arguments:
-h, --help show this help message and exit
-2
-3 THREE
-4 FOUR
-5 FIVE
Note: arguments -3 and -4 are required when -2 is missing
[~]: ./test.py -2
Good: Namespace(five=None, four=None, three=None, two=True)
[~]: ./test.py -3 a -4 b
Good: Namespace(five=None, four='b', three='a', two=False)
[~]: ./test.py -3 a
usage: test.py [-h] [-2] [-3 THREE] [-4 FOUR] [-5 FIVE]
test.py: error: arguments -3 and -4 are required when -2 is missing
[~]: ./test.py -2 -5 c
Good: Namespace(five='c', four=None, three=None, two=True)
[~]: ./test.py -2 -3 a
Good: Namespace(five=None, four=None, three='a', two=True)
使鍵安裝在-2是複製其他命令可選一個子分析器。在頂層,將-3和-4鏈接在一起。 – Jiminion
使用以「-'開頭的子分析器命令可能會非常棘手。 '-2'可能有效,但'-t'或'--two'不會因爲它們看起來像可選項。但是,如果'-3'被定義爲一個參數,那麼'-2'不再作爲子分析器命令(或選擇)。 – hpaulj