argparse 是 Python 标准库命令行参数解析模块,支持位置参数、可选参数、类型转换、自动生成帮助文档。
核心概念
| 概念 | 说明 |
|---|
| ArgumentParser | 解析器对象 |
| 位置参数 | 必需,按顺序提供 |
| 可选参数 | 以 - 或 -- 开头,有默认值 |
| action | 参数行为(store_true、store、append 等) |
基本用法
1
2
3
4
5
6
7
8
9
| import argparse
parser = argparse.ArgumentParser(description="命令行工具示例")
parser.add_argument('input', type=str, help="输入文件")
parser.add_argument('--output', type=str, default='output.txt', help="输出文件")
parser.add_argument('--verbose', action='store_true', help="详细模式")
args = parser.parse_args()
print(f"输入: {args.input}, 输出: {args.output}")
|
参数类型
位置参数 vs 可选参数
1
2
| parser.add_argument('input', type=str, help="位置参数,必需")
parser.add_argument('--output', type=str, default="result.txt", help="可选参数")
|
布尔开关
1
2
3
| parser.add_argument('--verbose', action='store_true', help="启用详细输出")
# --verbose → args.verbose = True
# 无参数 → args.verbose = False
|
多值参数
1
2
| parser.add_argument('--files', type=str, nargs='+', help="多个文件")
# --files a.txt b.txt → args.files = ['a.txt', 'b.txt']
|
互斥参数
1
2
3
| group = parser.add_mutually_exclusive_group()
group.add_argument('--compress', action='store_true')
group.add_argument('--no-compress', action='store_true')
|
add_argument 参数
| 参数 | 说明 |
|---|
type | 数据类型(int、str、float) |
default | 默认值 |
required | 可选参数是否必需 |
choices | 允许值列表 |
nargs | 参数数量(?、*、+、数字) |
action | 行为(store_true、append、count) |
1
2
| parser.add_argument('--mode', choices=['train', 'test'], default='train')
parser.add_argument('--repeat', type=int, default=1)
|
parse_known_args
解析部分参数,保留未知参数:
1
2
3
| args, unknown = parser.parse_known_args(['--foo', '1', '--bar', '2'])
print(args) # Namespace(foo='1')
print(unknown) # ['--bar', '2']
|
适用场景:参数转发、子命令处理、部分参数解析
帮助文档
自动生成 -h / --help 帮助:
1
2
3
4
5
6
7
8
9
10
11
12
| $ python script.py --help
usage: script.py [-h] [--output OUTPUT] [--verbose] input
数据处理工具
positional arguments:
input 输入文件路径
optional arguments:
-h, --help show this help message and exit
--output OUTPUT 输出文件
--verbose 详细模式
|
Comments