在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
答案 0 :(得分:4)
如果您只需要版本,则可以执行此操作:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument(
'-v', '--version',
action='version',
version='%(prog)s 1.0',
)
Subparsers不再烦恼了;处理特殊version
操作并在解析器查找子命令之前退出脚本。