Python中解析命令行参数最推荐使用argparse标准库,它比手动处理sys.argv更健壮、易读、可维护,并能自动生成帮助文档和错误提示;支持位置参数、可选参数、短选项、类型检查、取值范围限制、互斥组等特性,且可通过封装函数、nargs、SUPPRESS等方式提升实战灵活性。
Python中解析命令行参数最推荐的方式是使用
标准库
argparse
,它比手动处理
更健壮、易读、可维护,还能自动生成帮助文档和错误提示。
基础用法:定义一个简单参数
比如写一个脚本
,支持传入姓名和问候次数:
运行示例:
→ 输出三遍 "Hello, Alice!"
→ 自动显示帮助信息(含参数说明)
位置参数 vs 可选参数
位置参数没有前缀(如
或
),必须按顺序提供;可选参数带前缀,可省略或调整顺序。
php版微信js-sdk支付接口类
php版微信js-sdk支付接口类
下载
立即学习
“
Python免费学习笔记(深入)
”;
添加位置参数:
,调用时直接写
短选项支持:
,可用
或
常用参数类型与约束
argparse 支持类型检查、取值范围限制、互斥组等实用功能:
或
自动转换类型
限定合法值
标记必填(位置参数默认必填)
用
实现“二选一”,比如
和
不能同时出现
实战小技巧
真实项目中建议这样组织:
把参数定义封装成函数,如
,便于复用和测试
对复杂参数(如多个文件、JSON 配置路径),用
或
接收多个值
通过
让未传参的选项不进入
命名空间,避免干扰逻辑判断
调试时可临时传入字符串列表测试:
sys.argvhello.py
import argparse
parser = argparse.ArgumentParser(description='一个打招呼的小工具')
parser.add_argument('--name', type=str, default='World', help='要问候的人名')
parser.add_argument('--count', type=int, default=1, help='问候次数')
args = parser.parse_args()
for _ in range(args.count):
print(f'Hello, {args.name}!')
python hello.py --name Alice --count 3python hello.py -h---parser.add_argument('filename', help='输入文件路径')python script.py data.txtparser.add_argument('-v', '--verbose', action='store_true', help='启用详细输出')-v--verbosetype=floattype=pathlib.Pathchoices=['A', 'B', 'C']required=Trueadd_mutually_exclusive_group()--debug--quietdef setup_parser():nargs='*'nargs='+'default=argparse.SUPPRESSargsparser.parse_args(['--name', 'Bob'])