python进阶
argparse 解析命令行参数
argparse 是 Python 标准库中的一个模块,用于解析命令行参数,提供用户友好的接口来定义、解析和处理命令行输入的参数。
基本用法
创建 ArgumentParser 对象
首先需要实例化ArgumentParser
对象,用于定义和解析参数:import argparse parser = argparse.ArgumentParser(description='描述脚本的功能')
添加参数
使用add_argument()
方法定义参数:parser.add_argument('--input', help='输入文件路径', required=True) parser.add_argument('--output', help='输出文件路径', default='output.txt') parser.add_argument('--verbose', help='显示详细日志', action='store_true')
解析参数
调用parse_args()
方法解析命令行参数:args = parser.parse_args() print(args.input) print(args.output)
参数类型
位置参数
不带有--
前缀的参数,按顺序解析:parser.add_argument('input_file', help='输入文件')
可选参数
带有--
前缀的参数,通常用于可选配置:parser.add_argument('--output', help='输出文件')
布尔标志
使用action='store_true'
或action='store_false'
定义布尔参数:parser.add_argument('--verbose', action='store_true', help='启用详细模式')
选择参数
使用choices
限制参数可选值:parser.add_argument('--mode', choices=['train', 'test'], help='运行模式')
参数类型转换
使用type
指定参数类型:parser.add_argument('--count', type=int, help='数量')
高级用法
子命令解析
类似git
的子命令模式,可以使用add_subparsers()
:subparsers = parser.add_subparsers(dest='command') parser_train = subparsers.add_parser('train', help='训练模型') parser_train.add_argument('--epochs', type=int, help='训练轮数')
参数组
使用add_argument_group()
分组显示帮助信息:group = parser.add_argument_group('优化选项') group.add_argument('--lr', type=float, help='学习率')
互斥参数
使用add_mutually_exclusive_group()
定义互斥参数:group = parser.add_mutually_exclusive_group() group.add_argument('--verbose', action='store_true') group.add_argument('--quiet', action='store_true')
示例脚本
以下是一个完整的示例脚本,展示如何使用 argparse:
import argparsedef main():parser = argparse.ArgumentParser(description='处理输入和输出文件')parser.add_argument('--input', required=True, help='输入文件路径')parser.add_argument('--output', default='output.txt', help='输出文件路径')parser.add_argument('--verbose', action='store_true', help='显示详细日志')args = parser.parse_args()if args.verbose:print(f'输入文件: {args.input}')print(f'输出文件: {args.output}')if __name__ == '__main__':main()
使用帮助
运行脚本时,可以通过 -h
或 --help
查看自动生成的帮助信息:
python script.py --help
输出类似:
usage: script.py [-h] --input INPUT [--output OUTPUT] [--verbose]描述脚本的功能options:-h, --help show this help message and exit--input INPUT 输入文件路径--output OUTPUT 输出文件路径--verbose 显示详细日志
argparse 自动生成帮助信息,简化了命令行工具的开发流程。