我使用argparse在Python,我需要這樣做控制檯:是否有可能使用argparse(Python)在另一個內部創建一個互斥組?
python3 my_program.py (-a | -b) | (-c | -d)
我看了幾個論壇,我想答案是否定的,但爲了以防萬一。可能嗎?
我使用argparse在Python,我需要這樣做控制檯:是否有可能使用argparse(Python)在另一個內部創建一個互斥組?
python3 my_program.py (-a | -b) | (-c | -d)
我看了幾個論壇,我想答案是否定的,但爲了以防萬一。可能嗎?
你不需要聽任何人的話 - 嘗試一下。
import argparse
parser=argparse.ArgumentParser()
g = parser.add_mutually_exclusive_group()
g1 = g.add_mutually_exclusive_group()
g1.add_argument('-a')
g1.add_argument('-b')
g2 = g.add_mutually_exclusive_group()
g2.add_argument('-c')
g2.add_argument('-d')
print [a.dest for a in g._group_actions]
print [a.dest for a in g1._group_actions]
print [a.dest for a in g2._group_actions]
parser.print_help()
生產:
['a', 'b', 'c', 'd'] # actions in group g
['a', 'b']
['c', 'd']
usage: stack23292325.py [-h] [[-a A | -b B] [-c C | -d D]
g1
和g2
可在另一組g
來定義,但淨效果是使4個動作相互排斥的。如果你仔細想想,這在邏輯上是正確的。
使用線不太正確。第一個'['來自g
,但沒有'|'或']'。使用格式化程序沒有嵌套組的概念。儘管它們是獨立的,但它只是嘗試對這三組進行格式化。
但是你可以寫你自己的使用線。
這種嵌套更有意義的是g
是argument_group
。然後,這些行爲將被放置在一個明確的幫助組中。這兩類組在功能上有很大不同。
http://bugs.python.org/issue17218使用此功能在argument_group中嵌套mutual_exclusive_group以向MXG添加「標題」和「描述」。這是一個argparse unittest文件Lib/test/test_argparse.py
的例子。
可能相關的bug http://bugs.python.org/issue11588 – msvalkon
好吧,目前來看,似乎不可能製作嵌套組。 – forvas
這與由'-a','-b','-c'和'-d'組成的單個互斥組有什麼不同? – chepner