Python argparse类帮助选项

Python argparse类帮助选项,python,argparse,Python,Argparse,我正在编写一个python脚本,它包含两个参数和一些选项: scriptname [-h] [-l] [-q|-d] arg1 arg2 -q(安静)和-d(调试)选项更改详细程度,-h选项是argparse自动创建的帮助选项 我希望-l(list)选项的行为类似于-h选项,因为它不需要(否则是必需的)参数存在,并列出一些有用的信息(与-h选项不同)。实际上,这意味着可以通过以下三种方式调用脚本: scriptmane [-q|-d] arg1 arg2 scriptname -l scrip

我正在编写一个python脚本,它包含两个参数和一些选项:

scriptname [-h] [-l] [-q|-d] arg1 arg2
-q
(安静)和
-d
(调试)选项更改详细程度,
-h
选项是argparse自动创建的帮助选项

我希望
-l
(list)选项的行为类似于
-h
选项,因为它不需要(否则是必需的)参数存在,并列出一些有用的信息(与
-h
选项不同)。实际上,这意味着可以通过以下三种方式调用脚本:

scriptmane [-q|-d] arg1 arg2
scriptname -l
scriptname -h
两种可能的前进方式是:

  • 将参数设置为可选(使用nargs=“?”)并添加代码,以验证在没有给出选项的所有情况下是否有两个参数
  • 编写自定义操作类(不确定详细信息)
  • 但我希望有一种更直接的方式从帮助选项继承“此选项就是您所需要的全部”行为


    解决方案(基于samwyse的回答):

    基于中的
    \u HelpAction()

    然后,在解析器设置过程中:

        parser.add_argument('-l', '--list', action=_ListAction, 
                            help="List all available cases")
    

    您可以使用
    argparse
    轻松完成此操作。以下内容将同时支持
    -l
    -list
    作为附加帮助选项:

    parser.add_argument("-l", "--list", action="help")
    
    如果不想支持长格式(
    --list
    ),只需从参数列表中省略它。

    如果选项“list”的行为与“help”不同,则需要编写自定义操作。好消息是这样做非常简单。argparse的主页为您提供了提示,您只需意识到只要在参数列表中看到该选项,就会调用该操作。在新操作的调用(每端应该有两个下划线,但markdown使用这些下划线)方法中,为您的选项执行任何需要执行的操作,然后调用parser.exit()以缩短对任何其他参数的处理


    在这里查看_HelpAction和_VersionAction的源代码:(可能只是将其中一个子类化,以跳过编写初始化代码)。

    这将使“list”一词成为“help”的同义词。如果他想要一个不同的动作,那么他需要为此编写代码。是的,这就是我对这个问题的解释。但这可能是错误的,这只是关于不需要像
    -h
    那样的其他参数的部分?不,我希望-h和-l选项类似,它们都列出有用的信息并退出,不需要其他参数,但它们列出的文本将不同。我会修改一下,看看是否更清晰。好的,抱歉误解了。直到看到samwyse的评论,我才意识到我可能误解了。这正是我所想的,但在我的智能手机上,我很难编写代码。:)
    parser.add_argument("-l", "--list", action="help")