我正在创建一个 python 脚本,我想在其中使用一个参数来处理作为输出获得的搜索结果的数量。我目前将参数命名为 --head
。这是我希望它具有的功能:
--head
未在命令行中传递时,我希望它默认为一个值。在这种情况下,一个相当大的,比如 80 --head
没有任何值传递时,我希望它默认为另一个值。在这种情况下,一些有限的东西,比如 10 --head
传递一个值时,我希望它存储传递的值。 下面是一些描述问题的代码:
>>> import argparse
>>> parser = argparse.ArgumentParser()
>>> parser.add_argument('-h',
'--head',
dest='size',
const=80,
default=10,
action="I don't know",
help='Only print the head of the output')
>>> # OFC, that last line will fail because the action is uknown,
... # but here is how I'd like it to work
... parser.parse_args(''.split())
Namespace(size=80)
>>> parser.parse_args('--head'.split())
Namespace(size=10)
>>> parser.parse_args('--head 15'.split())
Namespace(size=15)
我知道我可能可以为此编写自定义操作,但我首先想看看是否有任何默认行为可以做到这一点。
最佳答案
在进一步阅读文档后,我找到了我需要的: nargs='?'
。
这与 store
操作一起使用,并且完全符合我的要求。
下面是一个例子:
>>> import argparse
>>> parser = argparse.ArgumentParser()
>>> parser.add_argument('--head',
dest='size',
const=10,
default=80,
action='store',
nargs='?',
type=int,
help='Only print the head of the output')
>>> parser.parse_args(''.split())
... Namespace(size=80)
>>> parser.parse_args('--head'.split())
... Namespace(size=10)
>>> parser.parse_args('--head 15'.split())
... Namespace(size=15)
来源:http://docs.python.org/3/library/argparse.html#nargs
关于python - 如何使用argparse为参数设置可选值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21997933/