Python argparse,有两个可选参数,至少有一个是必需的

Osc*_*car 0 python argparse

我在我的python程序中遇到问题,我有两个可选参数,问题是必须至少有一个这两个参数必须使用但是两个参数不能一起传递,有没有办法这样做与argparse?

这是我目前使用的代码:

parser = argparse.ArgumentParser(description='worker')
arser.add_argument('-i', "--item", type=bool, default=False, required=False)
parser.add_argument('-o', "--offer", type=bool, default=False, required=False)
Run Code Online (Sandbox Code Playgroud)

以下是我希望如何工作的一些示例:

  • ./main.py -i True =>好的

  • ./main.py -o True =>好的

  • ./main.py -o True -i True =>不行

Nik*_*sMM 6

我建议你重构参数并将-o和-i组合成一个强制参数.然后使用choices参数将o和i(或任何合适的)定义为允许值add_argument.

例如:

   parser.add_argument('foo', choices=['i', 'o'])
Run Code Online (Sandbox Code Playgroud)

现在用户必须指定两者中的一个,但不能同时指定两者.