argparse选项参数的可选值

13
我希望区分以下三种情况:
  • 根本没有标志 python example.py;
  • 标志存在但没有值 python example.py -t; 以及
  • 标志存在并具有值 python example.py -t ~/some/path.
如何使用Python argparse实现?前两种情况可以通过action ='store_true'来实现,但第三种情况则无效。
1个回答

19
您可以使用 nargs='?' 来实现此操作:

如果可能的话,将从命令行中使用一个参数并生成为单个项目。如果没有命令行参数,则将从默认值产生。请注意,对于可选参数,还有一个附加情况——选项字符串存在但未跟随命令行参数。在这种情况下,将产生常量值。

您的三种情况将分别给出:

  1. 默认值;
  2. 常量值;和
  3. '~/some/path'

例如,给定以下简单的实现:

from argparse import ArgumentParser

parser = ArgumentParser()
parser.add_argument('-t', nargs='?', default='not present', const='present without value')

print(parser.parse_args().t)

您将获得以下输出:
$ python test.py
not present

$ python test.py -t
present without value

$ python test.py -t 'passed a value'
passed a value

你能提供一个完整的例子来展示如何使用parser.add_argument()吗? - Omry Yadan
1
@OmryYadan已添加,感谢您的反馈。请注意,链接的文档中包含更多示例。 - jonrsharpe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接