python - 如何保留自动添加的 argparse 帮助参数,但从中删除 -h,以便我可以将该选项用于另一个参数

标签 python command-line-interface argparse

自动添加的帮助参数具有选项字符串 -h--help .我想保留 --help 的帮助参数但删除 -h从它,所以我可以使用该选项字符串作为另一个参数。

我认为必须有比用 add_help=False 完全删除帮助参数更好的方法。只是为了再次添加 --helpaction="help"紧接着,对吧?也许我可以修改现有的帮助参数的选项字符串?

顺便说一句,关于“不要删除 -h 因为用户希望它是 --help 的别名”:这是一个公平的论点。然而,在快速浏览我的本地二进制文件时,我找不到任何使用 -h 的命令。显示除 fdisk 以外的帮助信息. (当然,这并不意味着没有更多。)甚至更多:许多命令使用 -h对于完全不同的东西,请参阅 ls , cd , dfdiff列举其中一些。

最佳答案

冲突处理程序路由:

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/

相关文章:

PHP:为 STDIN/单字符处理添加方向键支持

python - 检测是否使用 optparse 或 argparse 多次指定了任何命令行选项

python - 对于 argparse,子解析器本质上是相互排斥的吗?

python - 循环遍历 python 字典并操作每个值

python - 如何更改pygame中按键的名称?

python - 如何制作双线性插值生成的等高线图的动画?

javascript - Node js post请求只能在第二次起作用

python - 将颜色打印到 python 命令行

python - 将 argparse 用于不带前缀的强制参数

python - imshow() 函数显示空的灰色图像。我该怎么办?