我試圖在不同羣組之間建立一個互斥羣組: 我有參數-a,-b,-c和我想與-a和-b發生衝突,或-a和-c在一起。該幫助應顯示類似[-a |的內容([-b] [-c])]。使用羣組之間的互斥
下面的代碼似乎並沒有這樣做有相互排斥的選項:
import argparse
parser = argparse.ArgumentParser(description='My desc')
main_group = parser.add_mutually_exclusive_group()
mysub_group = main_group.add_argument_group()
main_group.add_argument("-a", dest='a', action='store_true', default=False, help='a help')
mysub_group.add_argument("-b", dest='b', action='store_true',default=False,help='b help')
mysub_group.add_argument("-c", dest='c', action='store_true',default=False,help='c help')
parser.parse_args()
解析不同的組合 - 全通:
> python myscript.py -h
usage: myscript.py [-h] [-a] [-b] [-c]
My desc
optional arguments:
-h, --help show this help message and exit
-a a help
> python myscript.py -a -c
> python myscript.py -a -b
> python myscript.py -b -c
我試圖改變mysub_group
是add_mutually_exclusive_group
把一切都變成相互獨家:
> python myscript.py -h
usage: myscript.py [-h] [-a | -b | -c]
My desc
optional arguments:
-h, --help show this help message and exit
-a a help
-b b help
-c c help
如何爲[-a |添加參數([-b] [-c])]?
沒有什麼我想要的,因爲它沒有給我選擇只有-c(沒有-b)。 – itzhaki
這是真的,我的道歉。我不認爲你可以用argparse得到你想要的,但我仍然認爲docopt是一個不錯的選擇,你只需添加 用法:myscript.py [-h | -a | [-b -c]] 添加到您的文檔字符串中,它會爲您解決所有問題 –