自动添加的帮助参数具有选项字符串 -h
和 --help
.我想保留 --help
的帮助参数但删除 -h
从它,所以我可以使用该选项字符串作为另一个参数。
我认为必须有比用 add_help=False
完全删除帮助参数更好的方法。只是为了再次添加 --help
和 action="help"
紧接着,对吧?也许我可以修改现有的帮助参数的选项字符串?
顺便说一句,关于“不要删除 -h
因为用户希望它是 --help
的别名”:这是一个公平的论点。然而,在快速浏览我的本地二进制文件时,我找不到任何使用 -h
的命令。显示除 fdisk
以外的帮助信息. (当然,这并不意味着没有更多。)甚至更多:许多命令使用 -h
对于完全不同的东西,请参阅 ls
, cd
, df
和 diff
列举其中一些。
最佳答案
冲突处理程序路由:
In [5]: parser=argparse.ArgumentParser(conflict_handler='resolve')
In [6]: parser.add_argument('-h','--handle',help='handle foobar',default='foo');
In [7]: parser.print_help()
usage: ipython3 [--help] [-h HANDLE]
optional arguments:
--help show this help message and exit
-h HANDLE, --handle HANDLE
handle foobar
resolve
只是更改了“-h”,而不是“--help”。使用新的“-h”:
In [8]: parser.parse_args('-h bar'.split())
Out[8]: Namespace(handle='bar')
由于仍然允许使用缩写,因此带一个破折号的“-help”会产生意想不到的结果:
In [9]: parser.parse_args('-help'.split())
Out[9]: Namespace(handle='elp')
正确的帮助:
In [10]: parser.parse_args('--help'.split())
usage: ipython3 [--help] [-h HANDLE]
optional arguments:
--help show this help message and exit
-h HANDLE, --handle HANDLE
handle foobar
An exception has occurred, use %tb to see the full traceback.
SystemExit: 0
/usr/local/lib/python3.6/dist-packages/IPython/core/interactiveshell.py:3327: UserWarning: To exit: use 'exit', 'quit', or Ctrl-D.
warn("To exit: use 'exit', 'quit', or Ctrl-D.", stacklevel=1)
查看
_handle_conflict_resolve
的代码方法来查看它的作用。
关于python - 如何保留自动添加的 argparse 帮助参数,但从中删除 -h,以便我可以将该选项用于另一个参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60478568/