Python命令行参数解析
Python的argparse模块是标准库中用于解析命令行参数的核心工具。它能够自动生成帮助信息、处理无效参数,并支持位置参数、可选参数、默认值等功能。
一、ArgumentParser对象
ArgumentParser是argparse模块的核心类,用于创建命令行解析器。
1. ArgumentParser构造器
语法格式
1 | |
参数说明
| 参数 | 说明 | 示例 |
|---|---|---|
prog |
程序名称 | prog='myapp' |
description |
程序描述 | description='我的程序' |
epilog |
程序结尾文本 | epilog='更多信息' |
add_help |
是否添加-h/--help |
add_help=True |
示例
1 | |
输出:
1 | |
2. ArgumentParser常用方法
语法格式
1 | |
方法说明
| 方法 | 说明 | 示例 |
|---|---|---|
add_argument(...) |
添加命令行参数 | parser.add_argument('--name') |
parse_args(args) |
解析命令行参数 | parser.parse_args() |
print_help() |
打印帮助信息 | parser.print_help() |
二、定义参数
add_argument()方法用于向解析器添加命令行参数。
1. add_argument()基本参数
语法格式
1 | |
参数说明
| 参数 | 说明 | 示例 |
|---|---|---|
name |
位置参数名 | add_argument('filename') |
flags |
可选参数标识 | add_argument('-v', '--verbose') |
type |
参数类型 | type=int |
default |
默认值 | default='value' |
help |
参数说明 | help='帮助信息' |
示例
1 | |
输出:
1 | |
2. action参数
action参数控制参数如何处理。
语法格式
1 | |
action值说明
| action值 | 说明 | 示例 |
|---|---|---|
store |
存储值(默认) | action='store' |
store_true |
出现时存储True |
action='store_true' |
store_false |
出现时存储False |
action='store_false' |
append |
追加到列表 | action='append' |
count |
计数 | action='count' |
示例
1 | |
输出:
1 | |
3. nargs参数
nargs参数指定参数消耗的参数数量。
语法格式
1 | |
nargs值说明
| nargs值 | 说明 | 示例 |
|---|---|---|
N(整数) |
精确N个参数 | nargs=2 |
? |
0或1个 | nargs='?' |
* |
0或多个 | nargs='*' |
+ |
1或多个 | nargs='+' |
示例
1 | |
输出:
1 | |
4. choices参数
choices限制参数的可选值。
语法格式
1 | |
参数说明
| 参数 | 说明 | 示例 |
|---|---|---|
choices |
可选值列表 | choices=['low', 'high'] |
示例
1 | |
输出:
1 | |
5. required参数
required使可选参数变为必需的。
语法格式
1 | |
参数说明
| 参数 | 说明 | 示例 |
|---|---|---|
required |
是否必需 | required=True |
示例
1 | |
输出:
1 | |
三、解析参数
parse_args()方法执行参数解析。
1. parse_args()方法
语法格式
1 | |
参数说明
| 参数 | 说明 | 示例 |
|---|---|---|
args |
命令行参数列表 | parse_args(['--name', 'value']) |
namespace |
结果存放对象 | parse_args(namespace=obj) |
示例
1 | |
输出:
1 | |
2. 访问解析结果
语法格式
1 | |
示例
1 | |
输出:
1 | |
3. parse_known_args()方法
parse_known_args()处理未知参数。
语法格式
1 | |
示例
1 | |
输出:
1 | |
四、参数分组
参数分组可以组织相关的参数。
1. add_argument_group()方法
语法格式
1 | |
方法说明
| 方法 | 说明 | 示例 |
|---|---|---|
add_argument_group(title) |
创建参数组 | add_argument_group('基本选项') |
示例
1 | |
输出:
1 | |
五、互斥参数
互斥参数组确保同时只能使用其中一个。
1. add_mutually_exclusive_group()方法
语法格式
1 | |
方法说明
| 方法 | 说明 | 示例 |
|---|---|---|
add_mutually_exclusive_group() |
创建互斥组 | add_mutually_exclusive_group() |
示例
1 | |
输出:
1 | |
六、参数格式化
帮助信息的格式化控制。
1. formatter_class参数
语法格式
1 | |
formatter_class类说明
| 类 | 说明 | 示例 |
|---|---|---|
RawDescriptionHelpFormatter |
保留描述格式 | formatter_class=RawDescriptionHelpFormatter |
ArgumentDefaultsHelpFormatter |
显示默认值 | formatter_class=ArgumentDefaultsHelpFormatter |
MetavarTypeHelpFormatter |
显示参数类型 | formatter_class=MetavarTypeHelpFormatter |
示例
1 | |
输出:
1 | |
七、综合示例
1. 文件处理工具
示例
1 | |
运行示例:
1 | |
输出:
1 | |