我使用 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)
Run Code Online (Sandbox Code Playgroud)
但是,所有参数都已放入input,我得到以下输出:
Namespace(input=['input1', 'input2', 'output1', 'outpu2'], output=[])
Run Code Online (Sandbox Code Playgroud)
已--正确使用,但它不充当分隔符。
有没有办法使用 来实现这一点argparse?
不,没有。--用于将命名(“可选”)参数与位置参数分开,而不是将位置参数拆分为子段。这就是为什么文档说(添加了强调;引用来自nargs=\'*\'但没有什么区别,除了\'+\'需要至少一个参数):
\n\n\n\n
\'*\'所有存在的命令行参数都收集到一个列表中。请注意,\xe2\x80\x99 拥有多个位置参数通常没有多大意义nargs=\'*\',但拥有多个可选参数nargs=\'*\',但可以
为什么不定义一个标志--output(用nargs=\'+\'或什至nargs=\'*\')并使用更明确的方式调用您的程序
input1 input2 --output output1 output2\nRun Code Online (Sandbox Code Playgroud)\n\n(如果您担心输入八个字符,请使用简短的标志名称。)
\n| 归档时间: |
|
| 查看次数: |
1242 次 |
| 最近记录: |