繁体   English   中英

如何使用argparse为参数创建可选值?

[英]How to make an optional value for argument using argparse?

我正在创建一个python脚本,我希望有一个参数来操作你输出的搜索结果数量。 我目前已将参数命名为--head 这是我希望它拥有的功能:

  1. --head没有在命令行传递时,我希望它默认为一个值。 在这种情况下,一个相当大的,像80

  2. --head没有任何值传递时,我希望它默认为另一个值。 在这种情况下,有限的东西,如10

  3. --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='?'我找到了我需要的东西: 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM