禁用argparse和optparse的唯一前缀匹配

发布于 2021-01-29 16:01:09

当我使用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

--help,一起使用--hel--he用于帮助选项以及--forc--fo强制选项。

可以以某种方式关闭此行为吗?我想获取不完整参数的错误消息。

关注者
0
被浏览
47
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    仅在Python
    3.5中添加了禁用缩写的长选项的功能。从argparse文档中

    如果缩写不明确(前缀与唯一选项匹配),则 默认情况下parse_args()方法允许将长选项缩写为前缀。 可以通过将
    allow_abbrev
    设置 来禁用此功能 __ __False

    因此,如果您使用的是Python 3.5,则可以使用以下代码创建解析器allow_abbrev=False

    parser = argparse.ArgumentParser(..., allow_abbrev=False)
    

    如果您使用的是optparse或3.5之前版本的argparse,则只需要使用缩写选项即可。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看