我正在学习 argparse 的基础知识,并且我制作了一个在命令行中打印太阳系信息的程序,但是,我使用了 2 个位置参数,这导致了一些复杂性。我的目标是在命令行中输入未知参数时打印“帮助”界面,但由于使用了多个位置参数而无法打印。现在使用可选参数是不可能的。
如何打印未知参数的帮助?据我了解,行星不需要被称为特定的“行星”,而是任何东西和之后的行星名称,所以我发现很难做到这一点。
我正在学习 argparse 的基础知识,并且我制作了一个在命令行中打印太阳系信息的程序,但是,我使用了 2 个位置参数,这导致了一些复杂性。我的目标是在命令行中输入未知参数时打印“帮助”界面,但由于使用了多个位置参数而无法打印。现在使用可选参数是不可能的。
如何打印未知参数的帮助?据我了解,行星不需要被称为特定的“行星”,而是任何东西和之后的行星名称,所以我发现很难做到这一点。
也许你追求的是一个相互排斥的群体。
parser = argparse.ArgumentParser(description="About the Solar System") # initialises argparse
parser.add_argument("--orderby", help="displays the planets ordered by mass, largest to smallest", action='store_true')
group = parser.add_mutually_exclusive_group(required=True)
group.add_argument("--list", help="displays the planets in alphabetical order", action='store_true')
group.add_argument("planet", help="displays information on the chosen <planet> and opens a wiki page", nargs="?", action="store")
args = parser.parse_args()
这将导致
% python3 args.py
usage: args.py [-h] [--orderby] (--list | planet)
args.py: error: one of the arguments --list planet is required
和
% python3 args.py --list
Namespace(list=True, orderby=False, planet=None)
% python3 args.py asdf
Namespace(list=False, orderby=False, planet='asdf')
% python3 args.py --list asdf
usage: args.py [-h] [--orderby] (--list | planet)
args.py: error: argument planet: not allowed with argument --list
您想argParse.ArgumentTypeError
使用自定义类型引发一个,这里有一个基本示例如何做到这一点:argparse selections structure of allowed values