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