是否有可能爲argparse解析相結合的標誌是這樣的:的Python argparse允許組合標誌
app.py -bcda something
在這種情況下,我想something
設置爲-a
,其餘的將被保存爲True。基本上:
app.py -b -c -d -a something
我知道大多數程序都允許這樣做,例如, grep -rEw
,但用argparse做這件事有多難?
編輯:答案是它是開箱即用的。我甚至懶得去嘗試。
是否有可能爲argparse解析相結合的標誌是這樣的:的Python argparse允許組合標誌
app.py -bcda something
在這種情況下,我想something
設置爲-a
,其餘的將被保存爲True。基本上:
app.py -b -c -d -a something
我知道大多數程序都允許這樣做,例如, grep -rEw
,但用argparse做這件事有多難?
編輯:答案是它是開箱即用的。我甚至懶得去嘗試。
您可以store_const實現這一目標:
parser = argparse.ArgumentParser()
parser.add_argument('-a', action='store_const', const=True, default=False)
parser.add_argument('-b', action='store_const', const=True, default=False)
args = parser.parse_args()
然後你就可以用-a -b
或-ab
(或-a
,或-b
)從命令行調用它。
編輯:如果你想要一個標誌採取一個參數,你需要將它作爲鏈的最後一項傳遞。所以如果a
需要一個參數,你需要做-bcda something
'action ='store_true'更簡潔。 – hpaulj
這裏是我發現了一個小Googling:
幾個短選項可以連接在一起,只使用一個單一的 - 前綴,只要僅最後一個選項(或沒有人)需要 值:
>>> parser = argparse.ArgumentParser(prog='PROG')
>>> parser.add_argument('-x', action='store_true')
>>> parser.add_argument('-y', action='store_true')
>>> parser.add_argument('-z')
>>> parser.parse_args('-xyzZ'.split())
Namespace(x=True, y=True, z='Z')
http://docs.python.org/dev/library/argparse.html#option-value-syntax
正如Chris Barker指出的,答案是使用'-bcda'而不是'-abcd'。結合是一種可以直接使用的東西。 – Ray