argparse 是 Python 标准库命令行参数解析模块,支持位置参数、可选参数、类型转换、自动生成帮助文档。

核心概念

概念说明
ArgumentParser解析器对象
位置参数必需,按顺序提供
可选参数--- 开头,有默认值
action参数行为(store_true、store、append 等)

基本用法

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 可选参数

parser.add_argument('input', type=str, help="位置参数,必需")
parser.add_argument('--output', type=str, default="result.txt", help="可选参数")

布尔开关

parser.add_argument('--verbose', action='store_true', help="启用详细输出")
# --verbose → args.verbose = True
# 无参数 → args.verbose = False

多值参数

parser.add_argument('--files', type=str, nargs='+', help="多个文件")
# --files a.txt b.txt → args.files = ['a.txt', 'b.txt']

互斥参数

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)
parser.add_argument('--mode', choices=['train', 'test'], default='train')
parser.add_argument('--repeat', type=int, default=1)

parse_known_args

解析部分参数,保留未知参数:

args, unknown = parser.parse_known_args(['--foo', '1', '--bar', '2'])
print(args)     # Namespace(foo='1')
print(unknown)  # ['--bar', '2']

适用场景:参数转发、子命令处理、部分参数解析

帮助文档

自动生成 -h / --help 帮助:

$ 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         详细模式