python - 在 python argparse 中,是否有 nargs=1 的用例?

标签 python argparse

似乎在不指定 nargs 的情况下使用 store 的默认操作似乎总是更有意义,因此输出始终如预期,而不是有时是list 有时不是。我只是好奇我是否错过了什么..

例子

>>> import argparse                                                                                                                     
>>> parser = argparse.ArgumentParser()                                                                                                  
>>> parser.add_argument('--foo')                                                                                                        
_StoreAction(option_strings=['--foo'], dest='foo', nargs=None, const=None, default=None, type=None, choices=None, help=None, metavar=None)                                                                                                                                      
>>> parser.add_argument('--bar', nargs=1)                                                                                               
_StoreAction(option_strings=['--bar'], dest='bar', nargs=1, const=None, default=None, type=None, choices=None, help=None, metavar=None)
>>> parser.parse_args('--foo 1 --bar 1'.split())                                                                                        
Namespace(bar=['1'], foo='1')                                                                                                           
>>> parser.parse_args('')                                                                                                               
Namespace(bar=None, foo=None)                                                                                                           

最佳答案

默认的 nargs=Nonenargs=1 都需要一个值,但是 nargs=1 会将它放在一个列表中,例如

Namespace(foo='test')
Namespace(foo=['test'])

nargs=3 将需要 3 个值,并将它们也放在一个列表中。 *+ 也将值放在列表中。

来自文档,在 nargs=N 下: https://docs.python.org/3/library/argparse.html#nargs

Note that nargs=1 produces a list of one item. This is different from the default, in which the item is produced by itself.

nargs=1 只是 nargs=n 的一个实例。这不是特例。

对于您来说,作为 argparse 用户,您可能不需要使用 1。事实上,对我来说,这是新手的标志——除非明确需要输出中的列表。我可以想象,例如,构建一个解析器以编程方式将 n 设置为某个数字,可能是 3、5、1,并期望结果始终是一个列表。

关于python - 在 python argparse 中,是否有 nargs=1 的用例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37868384/

相关文章:

python - 多次指定参数时显示错误

python - 多级 argparse 子解析器

python - docopt 的选项多样性

python - 了解 Windows 上的 Python 3 argparse()

python - Argparse: "-p"或 "-p=value"但不是 "-p value"

python - 更改每个特定列的列值

python - 标识符规范化 : Why is the micro sign converted into the Greek letter mu?

python - 如何比较数据框 Pandas 中的列?

python - 使用两个现有列创建和填充 Pandas 数据框列

python - Django 查找在多个 OR 查询中匹配的字段