如何在argparse中使用subparsers的顶级参数

时间:2015-04-29 13:11:28

标签: python argparse

在Python的argparse中,如何在仍然使用作为subparsers实现的命令的同时实现顶级参数?

我正在尝试实现一个--version参数来显示程序的版本号,但是argparse正在给我error: too few arguments,因为我没有为其中一个子分析器指定一个子命令。 / p>

我的代码:

import argparse
parser = argparse.ArgumentParser()
parser.add_argument(
    '-v', '--version',
    help='Show version.',
    action='store_true',
    default=False
)
subparsers = parser.add_subparsers(
    dest="command",
)
list_parser = subparsers.add_parser('list')
parser.parse_args(['--version'])

输出:

usage: myscript.py [-h] [-v] {list} ...
myscript.py: error: too few arguments

1 个答案:

答案 0 :(得分:4)

如果您只需要版本,则可以执行此操作:

import argparse

parser = argparse.ArgumentParser()
parser.add_argument(
    '-v', '--version',
    action='version',
    version='%(prog)s 1.0',
)

Subparsers不再烦恼了;处理特殊version操作并在解析器查找子命令之前退出脚本。