【问题标题】:Python: Argparse - Required AND optional argumentsPython:Argparse - 必需和可选参数
【发布时间】:2017-06-14 10:39:23
【问题描述】:

如何使用argparseadd_argument() 函数,以便用户必须解析一个必需的值,也可能解析一个可选的值?

例如--read book [page]。您可以省略page 或解析您要阅读的特定页面。如果省略,则从第一页开始。

我认为这很容易做到,因为我可以看到很多任务,但显然不是?

我正在使用 Python 3+。

【问题讨论】:

  • + 是说--read 需要一个或多个参数的唯一方法。没有办法设置上限。指某东西的用途 '?'对于pagepageread 解耦。无论如何,请尝试使用 nargs 替代方案。

标签: python python-3.x argparse


【解决方案1】:

在调用中添加nargs='?',默认值为1(也可能type=int被解析为数字):

parser.add_argument('--read', dest='book', help='book to read')
parser.add_argument('page', nargs='?', default=1, type=int, help='page number')

【讨论】:

  • nargs='+' 更合适,因为实际上需要 book (第一个参数)。如果没有至少一个参数, + in nargs 将返回错误,?会让这个案子通过。
  • 据我所知,nargs="?" 在需要零个或一个可选参数时使用。因此它不能确定所需的值book 是否存在,对吗?
  • 哦,哇,我完全忽略了nargs="+"。有没有办法限制可选参数?
  • @kecer 添加了用例。 xvx 我会假设 --read book 和 page 是不同的参数(这使得解析器更容易)。
  • @xvx 您不必将书籍参数视为序列 - 您可以将它们视为单独的,这会将它们存储为不同的实体供您使用,而不影响使用它(甚至更好的是,您仅在不缺席时才处理页面)。
猜你喜欢
  • 1970-01-01
  • 2017-01-15
  • 1970-01-01
  • 2018-11-05
  • 2021-04-18
  • 1970-01-01
  • 2014-08-02
  • 2011-07-20
  • 2021-03-25
相关资源
最近更新 更多