gpt4 book ai didi

python - 如果存在可选参数,则不需要所有位置参数

转载 作者:太空宇宙 更新时间:2023-11-03 13:35:24 25 4
gpt4 key购买 nike

我有以下片段:

parser = argparse.ArgumentParser()
parser.add_argument("a") # always required
parser.add_argument("x") # don't required in case -t option is chosen
parser.add_argument("y") # don't required in case -t option is chosen
parser.add_argument("z") # don't required in case -t option is chosen
parser.add_argument("-t", "--tt")
args = parser.parse_args()

重点是,我不需要位置参数 x , yz如果-t选项已指定。

最佳答案

我认为您可以使用 parse_known_args 实现您想要的效果.基本上这意味着您可以部分解析 args,一次查看是否获得 -t,然后再次获得剩余的 args。

例如:

测试.py

import argparse

parser1 = argparse.ArgumentParser()
parser1.add_argument("a") # always required
parser1.add_argument("-t", "--tt", default=False, action='store_true')
args1 = parser1.parse_known_args()

if args1[0].tt:
print('got t')
else:
parser2 = argparse.ArgumentParser()
parser2.add_argument("x")
parser2.add_argument("y")
parser2.add_argument("z")
args2 = parser2.parse_args(args1[1])
print('got all args')

调用它:

$ python test.py a -t
got t
$ python test.py a
usage: test.py [-h] x y z
test.py: error: too few arguments
$ python test.py a b c d
got all args

尽管如此,您可能想要修改 usage 字符串以确保您得到一些理智的东西。像这样,您可以构建非常强大的 CLI,但强大的功能会给您的用户带来巨大的责任 :-)。

关于python - 如果存在可选参数,则不需要所有位置参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40709621/

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