gpt4 book ai didi

python - argparse 中 nargs 的范围

转载 作者:行者123 更新时间:2023-12-01 05:16:16 24 4
gpt4 key购买 nike

我有一个合并多个视频和音频文件的脚本。现在我有一个允许四个值的参数:

# -A FILENAME LANGUAGE POSITION SPEED
$ script.py [... more parameters ...] -A audio.mp3 eng -1 1 [... more parameters ...]

现在我希望第三个和第四个是可选的。目前我有两个想法,但也许有更好的解决方案:

  • nargs 设置为 +,如果提供 1 个或 4 个以上参数,则抛出错误。也许 type 参数可以捕捉到这一点。问题是,在帮助中看不到需要 2 到 4 个值。
  • 所有组合都有 4 个不同的参数。这将允许该位置可选。问题是我需要四个参数名称。

该参数也可能出现多次(actionappend)。

最佳答案

我建议让-A采用单个逗号分隔的字符串(或使用您选择的分隔符),并为帮助消息提供自定义元变量。

def av_file_type(str):
data = tuple(str.split(","))
n = len(data)
if n < 2:
raise ArgumentError("Too few arguments")
elif n == 2:
return data + (default_position, default_speed)
elif n == 3:
return data + (default_speed,)
elif n == 4:
return data
else:
return ArgumentError("Too many arguments")

p.add_argument("-A", action='append', type=av_file_type,
metavar='filename,language[,position[,speed]]')

使用 nargs='+',按照您喜欢的方式格式化帮助字符串将非常重要。

关于python - argparse 中 nargs 的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23172172/

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