Python argparse - 可选参数为 none 或更多
Python argparse - optional argument to be none or more
我有一个可选参数 -s 来设置该工具。我希望用户可以提供输入或使用默认值。如果他决定使用默认的,他应该能够跳过提供额外的输入。
例如,myScript -s
和 myScript -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')
我有一个可选参数 -s 来设置该工具。我希望用户可以提供输入或使用默认值。如果他决定使用默认的,他应该能够跳过提供额外的输入。
例如,myScript -s
和 myScript -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')