Skip to main content
 首页 » 编程设计

python之如何在 argparse 中使用带有子解析器的顶级参数

2025年05月04日15JeffreyZhao

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

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

我的代码:

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 

请您参考如下方法:

如果你只需要版本工作,你可以这样做:

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

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