Python argparse - 可选参数为none或更多

时间:2018-05-02 08:57:02

标签: python argparse

我有一个可选参数-s来设置工具。我希望用户可以提供输入或使用默认值。如果他决定使用默认值,他应该可以跳过提供额外的输入。

例如,myScript -smyScript -s "Hello"都可以正常工作

似乎action = store_true与nargs ='*'

的效果不佳

1 个答案:

答案 0 :(得分:1)

argparse存储操作允许程序员区分3个用例:

  • 选项不存在(使用default
  • 选项存在且没有其他值(使用const
  • 选项存在且具有值(使用传递的值)

假设您希望-s-s Hello执行相同操作,您可以使用

parser = argparse.ArgumentParser(description = "Some desc.")
parser.add_argument("-s", nargs='?', const='Hello', default = None)

然后你可以测试它:

>>> parser.parse_args([])
Namespace(s=None)
>>> parser.parse_args(["-s"])
Namespace(s='Hello')
>>> parser.parse_args(["-s", 'Hello'])
Namespace(s='Hello')
>>> parser.parse_args(["-s", 'foo'])
Namespace(s='foo')