Python:如何将'-help'添加到argparse帮助命令列表中?



有没有办法将"-help"命令包含在argparse帮助列表中?

如果我输入"-help",我希望在输出上有这样的东西。

optional arguments:
-h, -help, --help            show this help message and exit

谢谢

正如@Akaisteph7所建议的:

import argparse
parser = argparse.ArgumentParser()
parser.add_argument('-help', action="help", help="second help :)")
parser.add_argument('-f', '--foo')
parser.print_help()
0945:~/mypy$ python3 stack57058526.py 
usage: stack57058526.py [-h] [-help] [-f FOO]
optional arguments:
  -h, --help         show this help message and exit
  -help              second help :)
  -f FOO, --foo FOO

更改为:

parser = argparse.ArgumentParser(add_help=False)
parser.add_argument('-h','--help','-help', action="help", help="replacement help")
0946:~/mypy$ python3 stack57058526.py 
usage: stack57058526.py [-h] [-f FOO]
optional arguments:
  -h, --help, -help  replacement help
  -f FOO, --foo FOO

将"-help"标志添加到默认帮助需要修改几个"私有"属性:

parser = argparse.ArgumentParser()
parser._actions[0].option_strings += ['-help']                                                          
parser._option_string_actions['-help'] = parser._option_string_actions['-h']  
0947:~/mypy$ python3 stack57058526.py 
usage: stack57058526.py [-h] [-f FOO]
optional arguments:
  -h, --help, -help  show this help message and exit
  -f FOO, --foo FOO

如果要将此更改构建到本地版本的 argparse 中,则可以在 ArgumentParser.__init__ 方法中修改此代码块:

    if self.add_help:
        self.add_argument(
            default_prefix+'h', default_prefix*2+'help',
            action='help', default=SUPPRESS,
            help=_('show this help message and exit'))

是否更改argparse.py的本地副本或子类ArgumentParser取决于您。

虽然可以这样做,但不建议这样做。单破折号只能与单个字母一起使用。一般来说,您应该遵循建议,因为它们的存在是有原因的。

但是,如果您真的想添加它,则可以使用以下方法:

parser.add_argument("-help", action="help")

argparse可以使用任何前缀字符。例如,要支持 POSIX、Cmd.exe 和 PowerShell 类型的查询,您可以使用:

p = ArgumentParser(prefix_chars="-/", add_help=False)
p.add_argument("-help", "--help", "-h", "/?", action="help")

请记住使用add_help=False否则您将有两个帮助命令!

最新更新