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

Python argparse - optional argument to be none or more

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

例如,myScript -smyScript -s "Hello" 都应该有效

似乎 action = store_true 不能很好地与 nargs='*'

一起使用

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')