gpt4 book ai didi

python - 如何从 nargs=REMAINDER 制作 argparse 拆分 nargs ='+'

转载 作者:行者123 更新时间:2023-12-03 21:59:22 35 4
gpt4 key购买 nike

我正在使用 argparse 将几个位置参数解析为 input然后是几个位置参数 output .由于参数数量不受限制,我尝试使用 --作为分隔符。我通常使用 -- 取得成功分隔符使用 nargs=argparse.REMAINDER ,所以我试过这个:

import argparse

parser = argparse.ArgumentParser()
parser.add_argument("input", nargs='+')
parser.add_argument("output", nargs=argparse.REMAINDER)

args = parser.parse_args("input1 input2 -- output1 outpu2".split())
print(args)

但是,所有参数都放入 input我得到这个输出:
Namespace(input=['input1', 'input2', 'output1', 'outpu2'], output=[])
--被正确消耗,但它不充当分隔符。

有没有办法使用 argparse 来实现这一点? ?

最佳答案

不,没有。 --用于将命名(“可选”)参数与位置参数分开,而不是将位置参数拆分为子段。这就是为什么文档说(强调;引用来自 nargs='*' 但没有区别,除了 '+' 需要至少一个参数):

'*' All command-line arguments present are gathered into a list. Note that it generally doesn’t make much sense to have more than one positional argument with nargs='*', but multiple optional arguments with nargs='*' is possible.



为什么不定义一个标志 --output (使用 nargs='+' 甚至 nargs='*' )并使用更明确的方式调用您的程序
input1 input2 --output output1 output2

(如果您担心输入八个字符,请使用简短的标志名。)

关于python - 如何从 nargs=REMAINDER 制作 argparse 拆分 nargs ='+',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60589850/

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