Sim*_*rta 12 python optparse argparse
当我使用Python的argparse或optparse命令行参数解析器时,参数的任何唯一前缀都被认为是有效的,例如
$ ./buildall.py --help
usage: buildall.py [-h] [-f]
Build all repositories
optional arguments:
-h, --help show this help message and exit
-f, --force Build dirty repositories
Run Code Online (Sandbox Code Playgroud)
作品有--help,--hel,--he的帮助选项,以及--forc与--fo为强制选项.
可以以某种方式关闭此行为吗?我想获得不完整参数的错误消息.
use*_*ica 10
禁用缩写长选项的功能仅在Python 3.5中添加.从argparse文档:
该
parse_args()方法在默认情况下允许长选项被缩写为前缀,如果缩写是明确的(前缀匹配的唯一选项)... 此功能可通过设置被禁用allow_abbrev到False.
因此,如果您使用的是Python 3.5,则可以使用以下命令创建解析器allow_abbrev=False:
parser = argparse.ArgumentParser(..., allow_abbrev=False)
Run Code Online (Sandbox Code Playgroud)
如果您使用的是optparse或3.5之前的argparse,您只需要使用缩写选项.
对于我们这些出于某种原因仍然坚持使用 python2.7 的人来说,这是在本地禁用前缀匹配的最小更改:
class SaneArgumentParser(_argparse.ArgumentParser):
"""Disables prefix matching in ArgumentParser."""
def _get_option_tuples(self, option_string):
"""Prevent argument parsing from looking for prefix matches."""
return []
Run Code Online (Sandbox Code Playgroud)
现在不再使用 argparse.ArgumentParser,而是使用 SaneArgumentParser。与 chepner 的回答不同,这不需要对 argparse 模块进行任何修改。这也是一个小得多的变化。希望其他陷入 Python 过去的人会发现这很有用。
| 归档时间: |
|
| 查看次数: |
1604 次 |
| 最近记录: |