相关疑难解决方法(0)

Python argparse:有没有办法在nargs中指定范围?

我有一个可选参数,支持一个参数列表本身.

我的意思是,它应该支持:

  • -f 1 2
  • -f 1 2 3

但不是:

  • -f 1
  • -f 1 2 3 4

有没有办法在argparse中强制执行此操作?现在我使用nargs ="*",然后检查列表长度.

编辑:根据要求,我需要的是能够定义一系列可接受的参数.我的意思是,说(在例子中)2或3个args是正确的,但不是1或4或任何不在2..3范围内的东西

python argparse

31
推荐指数
1
解决办法
1万
查看次数

Python argparse:组合'choices','nargs'和'default'时输入不一致

我有以下python程序:

#!/usr/bin/env python

import argparse

parser = argparse.ArgumentParser()
parser.add_argument('arg', choices=['foo', 'bar', 'baz'], default='foo', nargs='*')

args = parser.parse_args()

print(args)
Run Code Online (Sandbox Code Playgroud)

如果我像这样调用程序:

./prog.py
Run Code Online (Sandbox Code Playgroud)

输出是

Namespace(arg='foo')
Run Code Online (Sandbox Code Playgroud)

但是如果我foo以参数的形式调用程序:

./prog.py foo
Run Code Online (Sandbox Code Playgroud)

输出是

Namespace(arg=['foo'])
Run Code Online (Sandbox Code Playgroud)

如何才能获得arg默认值list

我试过了

我尝试过设置,default=['foo']但结果是:

prog.py: error: argument arg: invalid choice: ['foo'] (choose from 'foo', 'bar', 'baz')
Run Code Online (Sandbox Code Playgroud)

python argparse

10
推荐指数
1
解决办法
362
查看次数

标签 统计

argparse ×2

python ×2