命令行参数接受 -SS 也如预期的那样使用 argparse -S

Command line args accepting -SS also where as expected is -S using argparse

我有如下定义的命令行参数 -S

import argparse
parser = argparse.ArgumentParser()
parser.add_argument(
        '-S',
        '--save',
        action='store_true',
        help='Save to directory'
    )

但是如果我使用 -SS 而不是 -S,python 不会抛出任何错误。我想要无效参数错误。谁能告诉我如何做到这一点?

您需要在 argparse.ArgumentParse

中使用 allow_abbrev=False
import argparse
parser = argparse.ArgumentParser(allow_abbrev=False)
parser.add_argument('-S',action='store_true',help='Save to directory')
parser.parse_args()

输出:

user@localhost:/tmp$ python3 temp.py -S
user@localhost:/tmp$ python3 temp.py -SS
usage: temp.py [-h] [-S]
temp.py: error: unrecognized arguments: -SS

-SS

调用时出现错误

不要使用 Single Dash。 使用 Double Dash。因为在单个破折号中(占用一个字符), 当你做 -SS 时它等同于 -S -S 这就是为什么没有错误。

但是如果你使用 Double Dash 那么它将是

--SS => --SS