gpt4 book ai didi

用于部分选择的多个参数的python argparse

转载 作者:太空狗 更新时间:2023-10-30 00:56:30 27 4
gpt4 key购买 nike

我像这样创建一个 argparser:

  parser = argparse.ArgumentParser(description='someDesc')
parser.add_argument(-a,required=true,choices=[x,y,z])
parser.add_argument( ... )

但是,仅针对选项“x”而不是选项“y,z”,我想有一个额外的必需参数。例如。

python test -a x       // not fine...needs additional MANDATORY argument b
python test -a y // fine...will run
python test -a z // fine...will run
python test -a x -b "ccc" // fine...will run

我如何使用 ArgumentParser 完成该操作?我知道使用 bash optparser 是可能的

最佳答案

详细说明子解析器方法:

sp = parser.add_subparsers(dest='a')
x = sp.add_parser('x')
y=sp.add_parser('y')
z=sp.add_parser('z')
x.add_argument('-b', required=True)
  • 这与您的规范不同,因为不需要 -a
  • dest='a' 参数确保命名空间中有一个“a”属性。
  • 通常不需要像“-b”这样的 optional 。子解析器“x”也可以采用所需的位置。

如果您必须使用 -a 可选,两步解析可能有效

p1 = argparse.ArgumentParser()
p1.add_argument('-a',choices=['x','y','z'])
p2 = argparse.ArgumentParser()
p2.add_argument('-b',required=True)
ns, rest = p1.parse_known_args()
if ns.a == 'x':
p2.parse_args(rest, ns)

第三种方法是事后进行自己的测试。您仍然可以使用 argparse 错误机制

parser.error('-b required with -a x')

关于用于部分选择的多个参数的python argparse,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17917265/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com