张芷铭的个人博客

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