我想使解析器像 cmd [-a xxx -b xxx] -c xxx -d xxx什么時候-a使用,我也想-b使用。同樣,如果-b使用,也-a必須使用。兩者都可以-a,-b并且不使用。我怎么做?我嘗試了自定義操作,但操作不順利。
2 回答

有只小跳蛙
TA貢獻1824條經(jīng)驗 獲得超8個贊
更好的設(shè)計是擁有一個帶有兩個參數(shù)的選項:
parser.add_argument('-a', nargs=2)
然后,您要么使用2個參數(shù)指定選項,要么根本不指定它。
$ script -a 1 2
或者
$ script
自定義操作(或后處理)可以將元組args.a
分為兩個單獨的值args.a
和args.b
。

手掌心
TA貢獻1942條經(jīng)驗 獲得超3個贊
Argparse本身不支持此類使用。
最有效的方法是檢查并檢查解析后是否滿足這些類型的條件:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('-b')
parser.add_argument('-c')
args = parser.parse_args()
required_together = ('b','c')
# args.b will be None if b is not provided
if not all([getattr(args,x) for x in required_together]):
raise RuntimeError("Cannot supply -c without -b")
添加回答
舉報
0/150
提交
取消