Python 如何在带有2个位置参数的argparse上打印帮助界面?

Python 如何在带有2个位置参数的argparse上打印帮助界面?,python,argparse,positional-parameter,Python,Argparse,Positional Parameter,我正在学习argparse的基础知识,我制作了一个程序,可以在命令行中打印太阳系的信息,但是,我使用了两个位置参数,这导致了一些复杂性。我的目标是在命令行中输入未知参数,但由于使用多个位置参数而无法打印“帮助”界面。现在不可能使用可选参数 如何打印未知参数的帮助?据我所知,planet不需要被称为专门的“planet”,而是任何东西和之后的行星名称,所以我发现很难做到这一点。您可能希望使用自定义类型提出一个argParse.ArgumentTypeError,这里有一个基本的示例如何做到这一点:

我正在学习argparse的基础知识,我制作了一个程序,可以在命令行中打印太阳系的信息,但是,我使用了两个位置参数,这导致了一些复杂性。我的目标是在命令行中输入未知参数,但由于使用多个位置参数而无法打印“帮助”界面。现在不可能使用可选参数


如何打印未知参数的帮助?据我所知,planet不需要被称为专门的“planet”,而是任何东西和之后的行星名称,所以我发现很难做到这一点。

您可能希望使用自定义类型提出一个
argParse.ArgumentTypeError
,这里有一个基本的示例如何做到这一点:

也许您想要的是一个


您当前的参数集相当奇怪。您真的需要该程序能够同时列出(一种子命令)和显示所选行星上的信息吗?将list和display的子命令设为子命令,或者将list设为标志,即使您认为这是不可能的。通常我们希望
argparse
问题包括迄今为止定义的
解析器
,以及一些示例命令行和所需的解析。很难从这样的文本中分辨出您想要什么和您尝试了什么。一个参数,无论是位置参数还是标记参数,都可以采用
choices
参数,例如
choices=['mercury','venus','earth',…]
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