我想区分这三种情况:
- 该标志根本不存在
python example.py
; - 该标志存在,但没有值
python example.py -t
;和 - 该标志存在,其值
python example.py -t ~/some/path
。
如何使用 Python argparse
执行此操作?前两种情况将由action='store_true'
涵盖,但随后第三种情况无效。
您可以使用
nargs='?'
执行此操作:
如果可能,将从命令行使用一个参数,并且 作为单个项目生产。如果不存在命令行参数,则 将生成默认值的值。请注意,对于可选参数, 还有一个额外的情况 - 选项字符串存在但不存在 后跟命令行参数。在这种情况下,来自 const 的值 将生产。
您的三种情况将给出:
default
值;const
值;以及-
'~/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